【问题标题】:HTML5: Javascript to force offline cache rebuild?HTML5:强制离线缓存重建的Javascript?
【发布时间】:2012-09-12 23:02:49
【问题描述】:
按照 html5rocks 的教程,我希望 window.applicationCache.update() 有助于强制重新构建离线缓存。
(http://www.html5rocks.com/en/tutorials/appcache/beginner/#toc-updating-cache)
目的是让用户点击“更新缓存”按钮。这是因为即使文件(css、img 等)都被修改了,计算机/平板电脑甚至不会检查它们是否有更新。用户留下的是旧内容。
这在 JS 中如何实现?
【问题讨论】:
标签:
javascript
html
offline-caching
html5-appcache
【解决方案1】:
如果您要问“客户端应该如何知道文件已被修改”,那么答案很简单 - 缓存清单应该包含一些唯一标识符,这些标识符会在这些文件更新时得到更新。我使用 PHP 生成清单,并使用所有缓存文件中单调递增的修订号和 MAX(filemtime) 的组合 - 当清单文件与客户端拥有的文件不同时,它将检查所有清单列出的文件是否有更新.
update() 触发更新检查并下载更新(如果有),但它实际上并没有用新的缓存数据替换旧的缓存数据。
swapCache() 将用新下载的缓存替换旧缓存版本。
但是,此时您的旧 JS 已经创建了您页面所依赖的所有管道......
我的 html5 应用程序会定期调用 update(),当下载缓存更新时,它只会向用户显示一个按钮,说“安装更新!”,它只是重新加载页面 - 这样新下载的缓存文件就会被应用当用户选择时,不会破坏他的工作流程。