Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新HTML5离线应用程序缓存的正确方法_Javascript_Html_Html5 Appcache - Fatal编程技术网

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

Javascript 更新HTML5离线应用程序缓存的正确方法,javascript,html,html5-appcache,Javascript,Html,Html5 Appcache,我在我的网站中使用离线缓存,并设置了以下事件处理程序来处理更新 applicationCache.addEventListener('updateready', function () { if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { window.applicationCache.swapCache(

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

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()就足够了,因为浏览器将在刷新时使用新文件?

实际上,根据MSDN文档,您应该同时使用这两个函数

从文件中:

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

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

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

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