【问题标题】:HTML5 offline cache programmatic expirationHTML5 离线缓存程序化过期
【发布时间】:2010-12-29 17:19:58
【问题描述】:

我有一个 HTML5 应用程序,它使用带有清单文件的脱机缓存。触发缓存更新的唯一方法是更改​​服务器上的清单文件。我正在寻找一种使缓存过期并强制更新的编程方式。

我浏览了规范,在 window.applicationCache 上寻找一些方法来使缓存过期。但是没有找到。有一个 update() 方法,但它只有在缓存过期时才会更新(即清单文件中有更改)。所以这没有帮助。

任何人都知道使应用程序缓存过期并强制下载的编程方式吗?

【问题讨论】:

  • 服务器端 编程方式是为旧的清单文件提供404。您应该使用包含版本字符串的清单文件名,以便您能够使清单的旧版本过期。

标签: html offline


【解决方案1】:

AFAIK,manifest 是启动更新的唯一方法。 HTML5 Rocks 网站有一篇文章讨论了通过在 appCache.status 中侦听 UPDATEREADY 状态后立即调用 applicationCache.swapCache() 以编程方式更新缓存(在 manifest 更新之后)。

我不确定这是否足够,但它是一个很好的阅读(向下滚动到“更新缓存”)——http://www.html5rocks.com/tutorials/appcache/beginner/

【讨论】:

    【解决方案2】:

    确实,更新仅由“更新的”清单文件触发。但是某些浏览器(FF、chrome)不会检查清单文件引用的所有文件。例如 jpg's 不会测试服务器是否有更新的。似乎浏览器的一般缓存策略会影响更新过程。要强制浏览器检查缓存清单中的全部或部分文件,您必须在 HTTP 标头中使用“Cache-Control: no-cache”标记这些文件。

    您可以使用 cookie 控制更新操作。如果您有解释 cookie 命令的服务器端脚本,您可以强制浏览器通过 javascript 废弃缓存内容。 例如,如果客户端执行 cache.update() 并设置了 cookie “cache_clear”,则服务器可能会以响应代码 404 进行响应,这会导致浏览器废弃应用程序缓存内容。

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 1970-01-01
      • 2013-01-23
      • 2011-07-30
      • 2011-11-27
      相关资源
      最近更新 更多