移除HTML5离线应用缓存

28

我有一份带有关联 appcache manifest 的 HTML 文档,但现在我想暂时取消离线应用程序缓存。

如果我从 <html> 标签中删除对清单的提及,已经缓存了版本的浏览器将继续使用该缓存版本。

如果我更新 appcache manifest,那么依然会存在 appcache。

最明智的去除离线应用程序缓存的方法是什么?我想我只需更改清单以不包含其他条目即可:

NETWORK:
*

那么它实际上不会缓存任何内容。

但肯定有一种方法可以完全摆脱appcache和清单文件,对吧?


可能是Removing HTML5 Appcache Manifest, Permanently的重复问题。 - Kyle Trauberman
4
这个问题是在2011年10月29日提出的。你建议的重复问题是在此问题之后的今年(2012年)提出的。 - Trott
2
有趣。我没有选择它,而是由新的测试版审查系统自动建议的。它看起来很匹配,所以我投了票。 - Kyle Trauberman
4个回答

31

您只需要从服务器中删除appcache清单文件。如果浏览器无法访问清单文件,它将停止缓存您的应用程序并删除所有已缓存的数据。

以下是两个网站提供的一些有用信息:

  

如果无法检索清单文件本身,则会忽略缓存,并且所有与之关联的缓存数据将被忽略。

http://appcache.offline.technology/

  

应用程序缓存也可能变得过时。如果从服务器中删除了清单,则浏览器会删除使用该清单的所有应用程序缓存,然后向应用程序缓存对象发送一个“过时”事件。然后将应用程序缓存的状态设置为OBSOLETE。

https://developer.mozilla.org/en/Offline_resources_in_Firefox


2
删除之后,您可以使用以下JavaScript代码进行测试;当从已删除的清单返回404时,会触发以下操作: appCache.addEventListener('obsolete', handleCacheEvent, false); - albert
也许你能帮我吗?https://dev59.com/Jmox5IYBdhLWcg3wTytx - Neo
1
这对我在Firefox上没用。当它收到404错误时,Firefox仍然使用缓存的appcache。解决方案在这里:https://dev59.com/hmoy5IYBdhLWcg3wCpoz#31083156 - Gregory Cosmo Haun
这个答案是不正确的,正确的解决方案在这里详细说明:https://stackoverflow.com/a/62587655/806876 - pygeek

21

如果你在删除了应用缓存清单、浏览器缓存并从服务器和HTML中删除了清单引用后,在Google Chrome中仍无法加载更新版本的HTML文档,请在浏览器中访问 chrome://appcache-internals/ ,然后点击要删除的清单旁边的“REMOVE”。


3
我能想到唯一出现这种情况的可能性是您没有将清单的常规HTTP缓存过期时间设置为立即过期。此外,虽然这只是一个小问题,但这个答案实际上并不是回答所问的问题。它回答了“如何从我的浏览器中删除它”,而不是如何对所有访问我网站的人进行删除。尽管如此,对Chrome用户来说非常有用! - Trott

6

手动删除应用程序缓存:仅适用于Chrome

在Chrome浏览器中输入以下网址:chrome://appcache-internals/

您将看到存储在应用程序缓存中的每个应用程序的列表,并有可能删除其中任何一个。

参考资料


2
在现代的Firefox浏览器中,您可以通过编辑首选项高级网络来操作离线缓存。
在Windows系统中(v27.01),您需要使用工具选项高级网络

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接