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