swapCache方法
swapCache方法用来手工执行本地缓存的更新,它只能在applicationCache对象的updateReady事件被触发时调用,updateReady事件只有服务器上的manifest文件被更新,并且把manifest文件中所要求的资源文件下载到本地后触发。顾名思义,这个事件的含义是“本地缓存准备被更新”。当这个事件被触发后,我们可以用swapCache方法来手工进行本地缓存的更新。接下来我们看一下在什么场合应用该方法。
首先,如果本地缓存的容量非常大,本地缓存的更新工作将需要相对较长的时间,而且还会把浏览器给锁住。这时,我们就需要一个提示,告诉用户正在进行本地缓存的更新,该部分代码如下。
applicationCache.onUpdateReady = function(){
//本地缓存已被更新,通知用户
alert("正在更新本地缓存");
applicationCache.swapCache();
alert("本地缓存已被更新,您可以刷新页面来得到本程序的最新版本。");
};
在上面的代码中,如果不调用swapCache方法也能实现更新,但是更新的时间不一样。不调用swapCache方法,本地缓存将在下一次打开本页面时被更新;如果调用swapCache方法的话,本地缓存将会被立刻更新。因此,可以使用confirm方法让用户自己选择更新的时间——是立刻更新,还是在下次打开页面时再更新。
需要注意的是,尽管使用swapCache方法立刻更新了本地缓存,但是并不意味着我们页面上的图像和脚本文件也会被立刻更新,它们都是在重新打开本页面时才会生效。
【例19.5】下面来看一个完整的使用swapCache方法的实例。在该实例中,使用到了applicationCache对象的另一个方法applicationCache.update,该方法的作用是检查服务器上的manifest文件是否有更新。在打开页面时设定了3秒钟执行一次该方法,检查服务器上的manifest文件是否有更新。如果有更新,浏览器会自动下载manifest文件中所有请求本地缓存的资源文件,当这些资源文件下载完毕时,会触发updateReady事件,询问用户是否立刻刷新页面以使用最新版本的应用程序,如果用户选择立刻刷新,则调用swapCache方法手动更新本地缓存,更新完毕后刷新页面。(实例位置:光盘\TM\sl\19\5)
其中页面的HTML代码如下。
<!DOCTYPE HTML>
<html manifest="swapCache.manifest">
<head>
<meta charset="UTF-8">
<title>swapCache 方法示例</title>
<script src="script.js"></script>
</head>
<body οnlοad="init()">
<p>swapCache 方法示例</p>
</body>
</html>
该HTML中嵌入了一个script.js脚本文件,在这个脚本中的函数init内编写手工检查更新的代码。该脚本文件中的代码如下。
该实例中使用的swapCache.manifest文件内容比较简单。代码如下。
CACHE MANIFEST
#version 7.20
CACHE:
script.js
https://www.bilibili.com/video/BV1kR4y167Cp/?spm_id_from=333.999.0.0https://www.bilibili.com/video/BV1kR4y167Cp/?spm_id_from=333.999.0.0