HTML5离线缓存程序化到期

时间:2010-12-29 17:19:59

标签: html5 offline

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

我查看了规范,在window.applicationCache上寻找一些方法使缓存失效。但没有找到任何。有一个update()方法,但只有在缓存过期时才会更新(即清单文件有变化)。所以这没有帮助。

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

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