HTML5 引入了应用程序缓存(Application Cache),这意味着可对 web 应用进行缓存,并可在没有因特网连接时进行访问。

    应用程序缓存为应用带来三个优势:

    1. 离线浏览 - 用户可在应用离线时使用它们
    2. 速度 - 已缓存资源加载得更快
    3. 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源

    使用应用程序缓存,通过创建 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 浏览器对本地缓存进行更新,存入所有新的资源文件,并且触发一个事件,通知本地缓存被更新。