HTML5 appcache 以编程方式删除

HTML5 appcache remove programmatically

是否有任何选项可以使用 javascript 删除 HTML5 应用程序缓存?

这些是 removing/disabling appcache 的可用选项:

  1. 用空内容更新 Manifest 文件 - 现有的应用程序缓存在没有任何资源的情况下可用
  2. 在现有清单文件中包含虚拟 url - 它将为新的应用程序缓存抛出 404。但是旧的应用程序缓存并没有完全从浏览器引擎中删除
  3. 从 chrome 开发者控制台中删除 - 如果我们想手动删除。

但我的要求是根据来自服务器的通知,使用 javascript 以编程方式删除 appcache。是否有任何选项可以实现此功能???

也许这可行。从服务器加载页面时,传递一个标志,指示您是否希望页面中包含清单属性。如果您在服务器上呈现 html,则将该标志传递给您正在使用的任何模板引擎。否则,return 一个不同的 html 页面基于该标志的值,它根本不包含 manifest 属性。

当您从服务器收到通知时,使用 ?includeAppCache=false 刷新该页面。

如果这不是您要找的,也许我误解了您的要求?据我了解你的问题,客户端将收到来自服务器的通知,指示客户端不应再使用 appcache,对吗?

您正在寻找的内容可能会通过 appcache 事件或清单文件的不同配置来完成,使用 fallback 部分或网络通配符,例如:

NETWORK:
*

我发现 this 是一个很好的资源。

我通过利用 AppCache 中的 Obsolete 事件找到了解决方案 API。

Appcache 仅下载版本更新:

当应用缓存版本被修改时,新文件将开始下载。到那个时候,应用程序不会等待阻止应用程序启动。它通过使用现有的缓存文件(CSS、JS 和动作文件)来工作。但是新下载的静态文件(CSS, JS)只会在重新启动时执行。

带有过时事件的 Appcache 下载:

我们可以创建新的应用缓存文件,而不是更新应用缓存版本,并且相同的引用已添加到 HTML 文件中。每当 appcache 文件状态为 404 或 410 时,它将 return 过时事件。在这种情况下,如果我们重新启动应用程序,新的缓存文件将并行下载,应用程序将处理从网络下载的新文件,而不是从旧缓存加载。