我正在使用.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文件的缓存标头(ETag
,Last-Modified
和/index
)都已更改,文件内容也已更改,但Chrome拒绝重新获取HTML除非通过devtools禁用缓存。
有谁知道Chrome为何如此积极地保留这个缓存的HTML?关于如何重新获取它的任何想法?
答案 0 :(得分:2)
您需要更改旧的清单文件(manifest.appcache
)。您的/index
文件是appcache的一部分,Chrome仍在使用它。
注意:我们鼓励作者在清单中包含主页, 但实际上,引用清单的页面是自动的 即使未明确提及也会缓存。
Chrome获取旧的清单,并且没有任何更改,因此它继续进行。尝试向manifest.appcache
添加随机评论,然后重试。
答案 1 :(得分:2)
确保/manifest.appcache返回404,这就是让浏览器了解它现在已经过时的原因,它们会删除所有本地缓存并在下次重新加载页面,因此他们会在新位置获取它。