3

我在我的网站上使用 HTML5 离线缓存已经有一段时间了,出于某些原因,我正在考虑将其关闭。令我惊讶的是,它不起作用。

这就是我实现 HTML5 离线缓存的方式。

在我的index.html我给出清单文件的路径

<html manifest="app.manifest">

在 app.manifest 文件中,我列出了我希望浏览器缓存以供离线使用的所有 js/css/png 文件。每次部署更新时,我都会更新 app.manifest 文件,这会导致浏览器获取清单文件中列出的所有文件的最新版本。

为了关闭离线缓存,我将 index.html 的开始标记更改为

<html>

我对 app.manifest 文件进行了虚拟更改,以便浏览器(已经缓存了我的网站)将检测到更改并下载所有文件的最新版本(包括 index.html)。

我注意到的是,浏览器确实获得了所有文件的最新版本。我在没有清单声明的更新版本中看到了新<html>标签,但是浏览器对未来更改的行为没有改变。即我现在希望浏览器在服务器上更改时立即获取新版本的 index.html 文件。然而,这不会发生。在我对清单文件进行任何更改之前,浏览器不会下载更新的 index.html。

<html>因此,在我看来,浏览器已将 app.manifest 文件与我的网站 URL 永久关联,即使我没有在标签中提及它,它也不会删除它。

我已经在 Google Chrome 和 Firefox 上进行了测试,结果相同。我也尝试重新启动 Chrome,但它不会忘记我的网站曾经为它定义了 app.manifest。我还没有找到任何关于网络上离线缓存这方面的讨论。

更新:我设法通过清除所有浏览数据(通过转到设置)来摆脱 Chrome 中的行为。但这不是我可以告诉用户做的事情。

4

1 回答 1

8

使清单URL 返回 404 以指示您不再需要离线 Web 应用程序。根据HTML5 §5.6.4的第 5 步,这会将缓存标记为过时,并将其删除。

您还可以通过转到 手动删除 Chrome 中的离线 Web 应用程序about:appcache-internals

于 2011-09-29T12:49:37.610 回答