首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

HTML5 离线应用程序【二】

2012-11-23 
HTML5 离线应用程序【2】applicationCache对象applicationCache对象代表本地缓存,可以用它来通知用户本地缓

HTML5 离线应用程序【2】
applicationCache对象

applicationCache对象代表本地缓存,可以用它来通知用户本地缓存中已经被更新,也允许用户手工更新本地缓存。在浏览器与服务器的交互过程中,当浏览器对本地缓存进行更新,将入新的资源文件时,会触发applicationCache对象的updateready事件,通知本地缓存已经被更新。可以利用该事件告诉用户本地缓存已经被更新,用户需要手工刷新页面来得到最新版本的应用程序,代表如下所示:

以上页面所使用的脚本文件代码如下:

CACHE MANIFEST#version 1.20CACHE:script.js
applicationCache对象的事件

首次访问网站:

    浏览器请求访问网站;服务器返回请求网页,例如index.html;浏览器发现该网页具有manifest属性,触发checking事件,检查manifest文件是否存在。不存在时,触发error事件,表示manifest文件未找到,不执行步骤6开始的交互过程;浏览器解析index.html网页,请求页面上所有资源文件;服务器返回所有资源文件;浏览器处理manifest文件,请求manifest中所有要求本地缓存的文件,包括index.html页面本身,即使刚才已经请求过该文件。如果要求本地缓存所有文件,这将是一个比较大的重复的请求过程;服务器返回所有要求本地缓存的文件;浏览器触发downloading事件,然后开始下载这些资源。在下载的同时,周期性地触发progress事件,开发人员可以用编程的手段获取多少文件已被下载,多少文件仍然处于下载队列等信息;下载结束后触发checked事件,表示首次缓存成功,存入所有要求本地缓存的资源文件。

再次访问网站,步骤(1)~(5)同上,在步骤(5)执行完之后,浏览器将核对manifest文件是否被更新,若没有被更新,触发noupdate事件,步骤(6)开始的交互过程不会被执行。如果被更新了,将继续执行后面的步骤,在步骤(9)中不触发checked事件,而是触发updateready事件,这表示下载结束,可以通过刷新页面来使用更新后的本地缓存,或调用swapCache()方法来立刻使用更新后的本地缓存。

另外,在访问缓存名单时如果返回一个HTTP404错误(页面未找到),或者401错误(永久消失),则触发obsolete事件。

在整个过程中,如果任何与本地缓存有关的处理中发生错误的话,都会触发error事件。可能会触发error事件的情况分为以下几种:

缓存名单返回一个HTTP404错误或HTTP401错误;缓存名单被找到且没有更改,但引用缓存名单的HTML页面不能正确下载;缓存名单被找到且被更改,但浏览器不能下载某个缓存名单中列出的资源;开始更新本地缓存时,缓存名单再次被更改。

热点排行