HTML5应用缓存似乎在Android上缓存了它自己的清单文件

时间:2012-11-29 17:18:57

标签: javascript android html5 caching manifest

我遇到了一个问题,我确信这是一个仅限Android的错误,但我需要确定并需要解决它,所以我希望你们中的一个可以提供帮助:)

这就是:

  • 您可以在浏览器中访问索引文件
  • 清单文件中声明的文件已缓存
  • 一切正常,您可以离线访问文件
  • 在这种情况下,您可以更改清单中的版本号,并在浏览器中更新文件(交换和刷新后),但是......
  • ...不在Android(三星Galaxy SIII Jelly Bean)上。它被卡住了,清单文件将永远不会从服务器读取并再次更新,无论我做什么,直到我清除设置中的缓存。

我认为它可能与其他缓存机制有关,但没有标头设置会有所帮助。

一个有趣的观察:

  1. 我可以直接调用应用程序缓存清单并在浏览器中显示它。我可以更改内容并再次刷新,更改将进入浏览器。
  2. 然后我调用index.html文件来调用应用程序缓存,然后调用
  3. 我重复步骤1.并直接调用应用程序缓存 - 现在它始终是一个正在显示的缓存版本! - 但不适用于iOS,Firefox,Safari,Chrome等。
  4. 这导致我得出结论浏览器缓存清单文件本身有点糟糕......

    可以在此处下载代码http://bit.ly/Tw9Qqy

    的index.html

    <!--[if IEMobile 7 ]>    <html class="no-js iem7"> <![endif]-->
      <!--[if (gt IEMobile 7)|!(IEMobile)]><!--> <html class="no-js" manifest="app.manifest"> <!--<![endif]-->
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta charset="utf-8">
        <title>test</title>
        <meta name="description" content="">
        <meta name="HandheldFriendly" content="True">
        <meta name="MobileOptimized" content="320">
        <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
        <meta http-equiv="cleartype" content="on">
    
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
    
        <link rel="stylesheet" type="text/css" href="style.css">
      </head>
      <body>
        <div id="test">test4</div>
        <img src="test.png"/>
      </body>
    </html>
    

    app.manifest     CACHE MANIFEST     #v127

    CACHE:
    style.css
    test.png
    
    FALLBACK:
    
    NETWORK:
    *
    

    的style.css

    #test{
      color: blue; 
    }
    

    其中没有什么花哨的东西,我试着将它煮沸并消除所有噪音。

    非常感谢任何帮助,解决方案,尝试等的想法! :)

0 个答案:

没有答案