正确的方法来更新HTML5离线应用程序缓存

时间:2014-07-17 14:34:42

标签: javascript html5 html5-appcache

我在我的网站中使用离线缓存,并设置了以下事件处理程序来处理更新

applicationCache.addEventListener('updateready', function () {
                    if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
                        window.applicationCache.swapCache();  
                        window.applicationCache.update();
                        window.location.reload();
                    }
                });

它起作用但对我来说似乎是多余的。我是否需要调用swapCache()和update()函数,或者一个简单的window.location.reload()是否足够,因为浏览器将在刷新时使用新文件?

1 个答案:

答案 0 :(得分:2)

实际上根据MSDN关于Application Cache API的文档,你应该同时使用它们。

来自文档:

  

要将旧缓存换成新缓存,请先调用update。   当状态处于UPDATEREADY状态时,调用swapCache将   交换。

     

调用swapCache不会更新页面上的任何内容。它会   只需让您的网页能够访问任何进一步的动态   来自新缓存而不是旧缓存的内容。页面之后   刷新后,新创建的缓存将用于所有页内和   动态请求。

     

提供swapCache方法是为了方便,但不是必需的   用于基本功能。加载或刷新页面就足够了。   例如,在UpdateReady事件之后刷新页面   无需调用swapCache即可从新缓存重新加载页面。

     

swapCache不会导致以前加载的资源重新加载;   例如,图像不会突然重新加载,并且样式表和   脚本不会被重新分析或重新评估。唯一的变化是   随后对缓存资源的请求将获得较新的副本。