2012-09-20 67 views
2

遵循html5rocks的教程,我希望window.applicationCache.update()有助于强制重新构建脱机缓存。 (http://www.html5rocks.com/en/tutorials/appcache/beginner/#toc-updating-cache)HTML5:JavaScript强制脱机缓存重建?

其目的是让用户点击“更新缓存”按钮。这是因为即使文件(css,img等)被修改,电脑/平板电脑也不会检查它们是否存在udpates。用户留下旧内容。

这怎么能在JS中完成?

回答

0

如果您问“客户端应该如何知道文件被修改”,那么答案很简单 - 缓存清单应包含一些唯一标识符,这些标识符在更新这些文件时会被更新。我使用PHP生成清单,并使用来自所有缓存文件的单调递增修订版本号和MAX(filemtime)的组合 - 当清单文件与客户端的清单文件不同时,它将检查所有清单列出的文件以获取更新。

update()触发更新检查并下载更新(如果有更新),但它实际上并没有用新的更新旧的缓存数据。

swapCache()将换出旧的缓存版本与新下载的版本。

然而,在这一点上你的老JS已经创建的所有管道的页面取决于...

的HTML5应用程序调用update()周期性,并且缓存下载更新时,它只是显示一个按钮用户说“安装更新!”,它只是重新加载页面 - 这样,当用户选择时,新下载的缓存文件将被应用,而不会中断他的工作流程。