12

我在一个站点上设置了一个应用程序缓存,不久之后我意识到它的方式比我意识到的更激进。我想删除它。永久。

我已经读过使用正确的 MIMETYPE 传递更改的清单文件,完全为空,将删除缓存。编辑:见下文。莫里斯的回答是唯一一致的解决办法。

这是最快、最有效的解决方案吗?有没有更好的办法?

如果您可以在回答之前指定您是否实际使用过此功能,我将非常感激 - 在测试期间未显示的模棱两可的文档和古怪是让我陷入这种情况的原因。

4

4 回答 4

19

诀窍是首先将 HTML 页面中的清单 URL 更改为无效的内容,以便浏览器在加载时收到 404。确保同时更改原始清单,否则永远不会下载新的 HTML 页面。在浏览器无法下载新的清单 URL 后,您可以从 HTML 页面中完全删除清单设置。

有点古怪,但这似乎是删除现有清单引用的唯一可靠方法。

于 2012-01-11T10:10:33.277 回答
9

截至 2015 年 6 月 25 日,我发现返回 404 不会清除 Firefox 的现有 appcache,返回空白 appcache 不会清除 Chrome 的现有 appcache。返回以下 appcache 似乎在 IE、Chrome、Safari 和 Firefox 中有效,尽管尚不清楚通过什么机制禁用 index.html 的“隐式”缓存。

NETWORK:
*

CACHE:
FALLBACK:
于 2015-06-26T22:40:05.123 回答
4

如果您只想将其从您身边移除,您可以从浏览器中执行此操作。我只记得如何在 Chrome 中进行操作。转到 chrome://appcache-internals/ 并删除所需的文件。您还可以清除缓存和 cookie,这应该可以。但是,我只在 Chrome 中进行了测试。

如果您想为所有观众删除它,我不知道他们是否有旧的缓存版本,但我知道像莫里斯建议的那样,用虚假链接保留属性是我知道的唯一方法; 不过,我确信还有另一种方法,最有可能使用 jQuery。

于 2014-02-26T21:05:51.263 回答
2

我一直有一个类似的问题,我需要在更新失败后重置appcache(即强制完全删除appcache,以便可以从头开始重新构建)。

基于莫里斯的回答,我向用户展示了一个通常隐藏的链接,该链接打开一个非缓存页面,该页面只是写入一个 cookie 并将用户返回到前一个视图。这个 cookie 告诉服务器在下次请求 appcache 时返回 404,然后用户将通过正常的登录过程。当应用程序下一次成功运行时,它会清除 cookie 并恢复正常缓存。

以这种方式使用 cookie 可以解决视图的主版本卡在 appcache 中的问题,从而难以将中断 url 注入 manifest="" 即清单 url 保持不变,但服务器以 404 响应除非另有说明。

于 2013-07-02T20:41:19.360 回答