似乎一旦你有一个清单条目,a la:
<html manifest="cache.manifest">
然后该页面(缓存中的主条目)将始终被缓存(至少通过 Safari),直到用户执行某些操作来删除缓存,即使您稍后从 html 标记中删除清单属性并更新清单(通过更改里面的东西),迫使主条目与其他所有内容一起重新加载。
换句话说,如果您有:
- index.html(已定义清单)
- file1.js(在清单中引用)
- file2.js(在清单中引用)
- cache.manifest(列出两个js文件)
-- 从 index.html 中删除清单条目并修改清单(因此它会被浏览器过期并重新加载所有内容)不会阻止此页面的行为,就好像它仍然完全缓存一样。如果您在 index.html 上查看源代码,您将不会再看到清单,但浏览器仍将仅请求 cache.manifest 文件,除非该文件的内容发生更改,否则对任何文件的其他更改都不会显示到用户。
这似乎是一个非常明显的错误,它存在于 iOS 以及 Mac 版本的 Safari 上。有没有人找到一种无需用户干预即可重置页面并清除缓存的方法?