3

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

这就是发生的事情:

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

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

一个有趣的观察:

  1. 我可以直接调用应用缓存清单并在浏览器中显示。我可以更改内容并再次刷新,这些更改会在浏览器中显示。
  2. 然后我调用 index.html 文件来调用应用程序缓存,然后
  3. 我重复第 1 步并直接调用应用程序缓存 - 现在它始终是一个正在显示的缓存版本!- 但不适用于 iOS、Firefox、Safari、Chrome 等。

这让我得出结论,浏览器缓存了清单文件本身,这有点糟糕......

代码可以在这里下载http://bit.ly/Tw9Qqy

索引.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 缓存清单 # v127

CACHE:
style.css
test.png

FALLBACK:

NETWORK:
*

样式.css

#test{
  color: blue; 
}

它真的没有什么花哨的,我试图把它煮沸并消除所有噪音。

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

4

0 回答 0