html5 – 一旦HTML文档有一个清单(cache.manifest),你如何删除它?

看来,一旦你有一个清单条目,
<html manifest="cache.manifest">

那么该页面(缓存中的主条目)将始终被缓存(至少由Safari),直到用户执行某些操作来删除缓存,即使您稍后从html标记中删除清单属性并更新清单(通过更改其中的东西),迫使主条目与其他一切重新加载。

换句话说,如果你有:

> index.html(带清单定义)
> file1.js(在清单中引用)
> file2.js(在清单中引用)
> cache.manifest(列出两个js
文件)

– 从index.html中删除清单条目并修改清单(因此浏览器和所有重新加载的内容都会过期)不会阻止该页面的行为完全缓存。如果您在index.html上查看源代码,您将不会再看到列出的清单,但是浏览器仍将仅请求cache.manifest文件,除非该文件的内容被更改,否则任何文件的其他更改都不会显示给用户。

它似乎是一个非常明显的bug,它出现在iOS以及Mac版本的Safari上。有没有人找到一种重置页面并摆脱缓存的方式,而不需要用户干预?

解决方法

我一直在研究同样的问题,它似乎不是一个api:

>动态触发页面被缓存
>动态地使页面停止被缓存。

以下是我找到的最好的资源:

http://www.html5rocks.com/tutorials/appcache/beginner/

http://www.thecssninja.com/javascript/how-to-create-offline-webapps-on-the-iphone

特别是从第一个链接引用:

If the manifest file or a resource specified in it fails to download,the entire update fails. The browser will continue to use the old application cache in the event of such a failure.

否则,关于卸载高速缓存的任何地方都没有提及。

似乎建议你不要强制一个错误来取消它。但是,如下所述,该规范表明,如果在下载清单文件时发生错误,则整个缓存将被删除。

在google chrome中,用户可以转到以下URL:

chrome://appcache-internals/

并手动禁用缓存。当然,当他们下次访问该页面时,如果该页面具有清单属性设置,那么它将被重新刷新。

如果你看规格:5.6 Offline Web applications

似乎建议缓存被删除的情况。具体来说,第5.6.4.5节:

If fetching the manifest fails due to a 404 or 410 response or equivalent,then run these substeps:
Mark cache group as obsolete. This cache group no longer exists for any purpose other than the processing of Document objects already associated with an application cache in the cache group.
If cache group has an application cache whose completeness flag is incomplete,then discard that application cache.

然后说:

If this was a cache attempt,discard cache group altogether.

基本上,如果缓存清单文件的请求导致404,那么整个缓存应该被丢弃。那么,当缓存清单文件被请求时,是否尝试使服务器返回404或410?这应该工作。诀窍是只返回要删除清单的页面的404/410(可能使用url参数?)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码
HTML5使用DOM进行自定义控制
使用HTML5 Canvas绘制阴影效果的方法
使用PHP和HTML5 FormData实现无刷新文件上传
如何解决HTML5 虚拟键盘出现挡住输入框的问题
HTML5中div和section以及article的区别分析
html5和CSS 实现禁止IOS长按复制粘贴功能
html5 touch事件实现触屏页面上下滑动
canvas 模拟实现电子彩票刮刮乐的代码
HTML5 Plus 实现手机APP拍照或相册选择图片上传的功能
Android自定义环形LoadingView效果
HTML5 canvas绘制五角星的方法
html5使用html2canvas实现浏览器截图
使用Canvas处理图片的方法介绍
利用Canvas模仿百度贴吧客户端loading小球的方法