Mic*_*l F 20 safari html5 offline-browsing
似乎一旦你有一个清单条目,一个la:
<html manifest="cache.manifest">
Run Code Online (Sandbox Code Playgroud)
然后,该页面(缓存中的主条目)将始终被缓存(至少通过Safari),直到用户执行删除缓存的操作,即使您稍后从html标记中删除清单属性并更新清单(通过更改)其中的内容),强制主条目与其他一切一起重新加载.
换句话说,如果你有:
- 从index.html中删除清单条目并修改清单(因此它被浏览器过期并重新加载所有内容)不会阻止此页面表现得好像它仍然完全缓存一样.如果您在index.html上查看源代码,您将不再看到列出的清单,但浏览器仍将仅请求cache.manifest文件,除非该文件的内容已更改,否则不会对任何文件进行任何其他更改.用户.
这似乎是一个非常明显的错误,它出现在iOS和Mac版本的Safari上.有没有人找到一种方法来重置页面并摆脱缓存而无需用户干预?
mik*_*ers 17
我一直在研究同样的问题,它似乎不是一个api:
以下是我发现的最佳资源:
http://www.html5rocks.com/tutorials/appcache/beginner/
http://www.thecssninja.com/javascript/how-to-create-offline-webapps-on-the-iphone
特别是这个引用来自第一个链接:
如果清单文件或其中指定的资源无法下载,则整个更新将失败.如果发生此类故障,浏览器将继续使用旧的应用程序缓存.
否则,没有任何关于卸载缓存的提及.
似乎暗示您不能强制执行错误以使其无法解除.但是,如下所述,该规范建议如果在下载清单文件时发生错误,则将删除整个缓存.
在Google Chrome中,用户可以转到以下网址:
并手动禁用缓存.当然,下次访问页面时,如果页面设置了清单属性,则会对其进行重新跟踪.
如果您查看规范:5.6脱机Web应用程序
它似乎暗示了删除缓存的情况.具体而言,第5.6.4.5节:
如果由于404或410响应或等效操作而未能获取清单,则运行以下子步骤:将缓存组标记为已过时.除了处理已与缓存组中的应用程序缓存关联的Document对象之外,此缓存组不再用于任何其他目的.如果缓存组具有完整性标记不完整的应用程序缓存,则丢弃该应用程序缓存.
然后它说:
如果这是缓存尝试,则完全丢弃缓存组.
基本上,如果对缓存清单文件的请求导致404,则应丢弃整个缓存.那么,您是否尝试过在请求缓存清单文件时服务器返回404或410?这应该工作.诀窍是只返回要从中删除清单的页面的404/410(可能使用url参数?).
归档时间: |
|
查看次数: |
9338 次 |
最近记录: |