Chrome使用.manifest文件积极缓存HTML

时间:2015-07-24 09:51:15

标签: html5 google-chrome caching cache-manifest

我正在使用.manifest文件告诉浏览器要缓存哪些资源。基本上包含以下内容:

CACHE MANIFEST
# This manifest was generated by grunt-manifest HTML5 Cache Manifest Generator
# Time: Fri Jul 24 2015 09:57:13 GMT+0100 (BST)

CACHE:
app.min.js
app.min.css
js/libs/require-min.js
img/leaf.png

NETWORK:
*

此文件在HTML中链接如下:

<!DOCTYPE html>
<html manifest="/app.manifest">
    <head>
        <style type="text/css" media="all">
    ....

在Safari用户报告他们的用户界面不尊重缓存文件后,我在读取Safari要求清单文件manifest.appcache后,将文件名从app.manifest更改为.manifest扩展

我现在看到(特别是在Chrome中)浏览器没有重新获取HTML源代码,因此没有看到清单文件已更改,因此未加载新的app.manifest文件,并没有下载任何源。 Expires HTML文件的缓存标头(ETagLast-Modified/index)都已更改,文件内容也已更改,但Chrome拒绝重新获取HTML除非通过devtools禁用缓存。

有谁知道Chrome为何如此积极地保留这个缓存的HTML?关于如何重新获取它的任何想法?

2 个答案:

答案 0 :(得分:2)

您需要更改旧的清单文件(manifest.appcache)。您的/index文件是appcache的一部分,Chrome仍在使用它。

来自HTML5 recommendation

  

注意:我们鼓励作者在清单中包含主页,   但实际上,引用清单的页面是自动的   即使未明确提及也会缓存。

Chrome获取旧的清单,并且没有任何更改,因此它继续进行。尝试向manifest.appcache添加随机评论,然后重试。

答案 1 :(得分:2)

确保/manifest.appcache返回404,这就是让浏览器了解它现在已经过时的原因,它们会删除所有本地缓存​​并在下次重新加载页面,因此他们会在新位置获取它。