如果我未实现任何updateready
事件处理程序且未调用swapCache()
,这是否意味着浏览器将始终使用该应用程序的第一个(最早的)下载版本?
如果否,那么为什么需要swapCache()
方法?
最佳答案
Swapcache确保从新的缓存中获取对缓存资源的“后续”调用。
swapcache后的后续含义。
要查看实际效果,请尝试在设置后动态设置img的src属性
updateready事件中的swapcache调用(以便浏览器在特定时间将其加载
时间)。确保此图像尚未在页面中的其他位置加载,因为那样会
扭曲此测试。
现在更改图像并更改 list 文件(以强制重新加载缓存的文件)。
在浏览器中重新加载页面。
现在,您应该在渲染页面中看到图像的新版本。
现在,注释掉对swapcache的调用。
更改 list 文件,然后重新加载页面,从而重新加载所有资源。
再次刷新页面(以确保您具有新缓存中的版本)。
现在,再次更改图像并更改 list 。
再次重新加载页面:现在您可以看到图像的旧版本。
在最后一种情况下,浏览器完成了将新版本加载到缓存中,但是由于
未调用swapcache,该图像仍是从旧的缓存中获取的。
如果您不对页面中的资源进行任何动态加载,则swapcache无效。
特别是,如果您在调用swapcache的updateready事件处理程序中重新加载页面,
首先没有任何作用,因为重新加载页面无论如何都会从新的缓存中获取它。
关于html - HTML5离线应用程序是否需要swapCache()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1894391/