Jak*_*čar 11 html5 offline application-cache
如果我没有实现任何updateready
事件处理程序而不调用swapCache()
,这是否意味着浏览器将始终使用应用程序的第一个(最旧的)下载版本?
如果不是,那么为什么swapCache()
需要这种方法呢?
小智 12
Swapcache确保从新缓存中获取对缓存资源的"后续"调用.swapcache之后的后续含义.要查看此操作,请尝试在updateready事件中的swapcache调用之后动态设置img的src属性(以便浏览器在该特定时间加载它).确保此图像尚未加载到页面的其他位置,因为这会扭曲此测试.现在更改映像并更改清单文件(强制重新加载缓存的文件).在浏览器中重新加载页面.您现在应该在渲染页面中看到新版本的图像.现在注释掉对swapcache的调用.对清单文件进行更改并重新加载页面,从而重新加载所有资源.再次刷新页面(以确保您拥有新缓存中的版本).现在再次更改图像并更改清单.再次重新加载页面:现在您看到图像的旧版本.在最后一种情况下,浏览器完成了在缓存中加载新版本,但由于未调用swapcache,因此仍然从旧缓存中获取图像.
如果您没有在页面中动态加载资源,则swapcache无效.
特别是,如果你在updateready事件处理程序中重新加载页面调用swapcache首先没有任何效果,因为重新加载页面无论如何都将从新的缓存中获取它.
我有一个具有相当大缓存(> 100mb)的应用程序.这需要特别长的时间来交换缓存(并且在发生这种情况时几乎锁定了浏览器).所以我显示一条消息,指示应用正在更新(请稍候......),然后调用swapCache()
,然后在完成后显示新消息.
不确定这是否回答了你的问题(至于为什么需要它),但我认为它swapCache()
至少提供了一个有效的用例.
小智 3
SwapCache 方法为应用程序提供了一种控制如何应用更新的机制。在常规 HTML 应用程序中,很难确定客户端浏览器上是否存在正确的 JS。此外,浏览器的实现方式也因缓存更新时间而异,我发现 iPhone 特别顽固。swapCache 让我重新掌控应用程序的更新方式,即我可以选择自动应用补丁或让用户选择何时应用等。
归档时间: |
|
查看次数: |
8011 次 |
最近记录: |