Javascript HTML5应用缓存似乎在缓存它';在Android上创建自己的清单文件

Javascript HTML5应用缓存似乎在缓存它';在Android上创建自己的清单文件,javascript,android,html,caching,manifest,Javascript,Android,Html,Caching,Manifest,我有一个问题,我确信这是一个仅适用于Android的bug,但我需要确定,并且需要解决它,所以我希望你们中的一位能够帮助:) 情况就是这样: 您可以在浏览器中访问索引文件 清单文件中声明的文件将被缓存 一切正常,您可以脱机访问文件 在这种情况下,您可以更改清单中的版本号,并在浏览器中对文件进行良好更新(在交换和刷新之后),但是 …不在Android(三星Galaxy SIII果冻豆)上。它被卡住了,在清除设置中的缓存之前,清单文件永远不会从服务器读取并再次更新,无论我做什么 我认为它可能与其

我有一个问题,我确信这是一个仅适用于Android的bug,但我需要确定,并且需要解决它,所以我希望你们中的一位能够帮助:)

情况就是这样:

  • 您可以在浏览器中访问索引文件
  • 清单文件中声明的文件将被缓存
  • 一切正常,您可以脱机访问文件
  • 在这种情况下,您可以更改清单中的版本号,并在浏览器中对文件进行良好更新(在交换和刷新之后),但是
  • …不在Android(三星Galaxy SIII果冻豆)上。它被卡住了,在清除设置中的缓存之前,清单文件永远不会从服务器读取并再次更新,无论我做什么
我认为它可能与其他缓存机制有关,但没有标题设置会有所帮助

一个有趣的观察:

  • 我可以直接调用应用缓存清单并在浏览器中显示它。我可以更改内容并再次刷新,这些更改会使其进入浏览器
  • 然后我调用index.html文件来调用应用缓存,然后
  • 我重复步骤1。并直接调用应用缓存-现在显示的始终是缓存版本但不是在iOS、Firefox、Safari、Chrome等中
  • 这让我得出结论,浏览器缓存清单文件本身有点糟糕

    代码可以在这里下载

    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>
    
    style.css

    #test{
      color: blue; 
    }
    
    这里面真的没有什么新奇的东西,我试着把它浓缩起来,去掉所有的噪音


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

    您可以尝试在html标记中引用的文件上添加版本号<例如,code>manifest=“app.manifest?v=125”可以解决常规缓存问题,但在这里我无法添加版本号。我无法更新索引文件,因为它是缓存的,并且依赖于清单,清单不会从服务器加载。因此,在这种情况下,我最终会使用缓存的“app.manifest?v=125”-清单版本。鸡和蛋。。。为了确定我刚刚验证了它,它给出了相同的结果。但愿它没有:)与
    有关吗?你试过移除那些特定的苹果标签吗?
    #test{
      color: blue; 
    }