HTML5 引入了应用程序缓存(Application Cache),这意味着可对 web 应用进行缓存,并可在没有因特网连接时进行访问。
应用程序缓存为应用带来三个优势:
- 离线浏览 - 用户可在应用离线时使用它们
- 速度 - 已缓存资源加载得更快
- 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源
使用应用程序缓存,通过创建 cache manifest 文件,可轻松创建 web 应用的离线版本。
**
首先一个http://www.daisy.com的网站,假设以index.html为主页,该主页使用index.manifest文件作为manifest文件。在该文件中缓存index.html 、hello.js、hello.jpg、hello2.jpg这几个文件。首次访问http://www.daisy.com网站时,他们的交互过程如下:
1 浏览器请求访问http://www.daisy.com
2 服务器返回index.html网页
3 浏览器解析index.html网页,请求页面上所有资源文件,包括HTML文件、图像文件、CSS文件、JavaScript文件,以及manifest文件
4 服务器返回所有要求本地缓存的文件
5 浏览器处理manifest文件,请求manifest中所有要求本地缓存的文件,包括index.html页面本身,即使刚刚已经请求国这些文件。如果你要求本地缓存所有文件,这将是一个比较大的重复的请求过程
6 服务器返回所有要求本地缓存的文件
7 浏览器对本地缓存进行更新,存入包括页面本身在内的所有要求本地缓存的资源文件,并且触发一个时间,通知本地缓存被更新。
现在浏览器已经把本地缓存更新完毕,如果再次打开浏览器访问http://www.daisy.com网站的时候,且manifest未更新,那么它们的交互过程如下:
1 浏览器再次请求http://www.daisy.com
2 浏览器发现这个页面被本地缓存,于是用本地缓存中的index.html页面
3 浏览器解析index.html页面,使用所有本地缓存中的资源文件。
4 浏览器向服务器请求manifest文件
5 服务器返回一个304 代码,通知浏览器manifest没有变化
如果再次打开浏览器的时候,manifest发生了变化,那么浏览器和服务器之间的交互如下:
1浏览器再次请求http://www.daisy.com
2 浏览器发现这个页面被本地缓存,于是使用本地缓存中的index.html
3 浏览器解析index.html页面,使用所有本地缓存中的资源文件。
4 浏览器向服务器请求manifest文件
5 服务器返回manifest文件
6 浏览器处理manifest文件,发现该文件已经被更新,于是请求所有要求进行本地缓存的资源文件,包括index.html本身
7 浏览器返回要求进行本地缓存的资源文件
8 浏览器对本地缓存进行更新,存入所有新的资源文件,并且触发一个事件,通知本地缓存被更新。