web应用程序的本地缓存是经过每一个页面的manifest文件来管理的,这个文件是一个简单的文本文件,能够在这个里面指定要缓存的资源文件的资源名称。能够为单独页面指定也能够对整个web应用程序指定一个总的manifest文件。同时也要对服务器进行设置,让服务器支持text/cache-manifest这个MIME类型。
manifest的大概写法css
CACHE MANIFESThtml
CACHE MANIFEST // 这一行是必须的是必须的,告知浏览器须要进行本地缓存web
/theme.css浏览器
/logo.gif缓存
/main.js安全
以此告诉浏览器对本地服务器的一些资源进行具体设置,上面的 manifest 文件列出了三个资源:一个 CSS 文件,一个 GIF 图像,以及一个 JavaScript 文件。当 manifest 文件加载后,浏览器会从网站的根目录下载这三个文件。而后,不管用户什么时候与因特网断开链接,这些资源依然是可用的。服务器
NETWORK网络
白名单,使用通配符"*". 则会进入白名单的open状态. 这种状态下.全部不在相关Cache区域出现的url都默认使 用HTTP相关缓存头策略.或者写出不须要缓存的文件,这 些文件都不会进行本地缓存。指定上述文件,能够用相对路径,也能够用绝对路径,都是ok的。可是绝对路径要加上http://app
applicationCache对象表明了本地缓存,它提供个了一些方法和事件,管理离线存储的交互过程。经过在firefox8.0的控制台中输入window.applicationCache能够看到这个对象的全部属性和事件方法。
当咱们不适用applicationCache的时候页面内容更新是在下一次打开本页面的时候更新吗若是使用了applicationCache的时候能够当即被更新。下面咱们来看一下它的一些属性和方法。网站
applicationCache.onUpdateReady = function(){ //第二次载入,若是manifest被更新 //在下载结束时候触发 //不触发onchched alert("本地缓存已经更新,您能够刷新页面来获得本程序的最新版本"); }
swapCache方法,该方法用来手工执行本地缓存
applicationCache.onUpdateReady = function(){ //第二次载入,若是manifest被更新 //在下载结束时候触发 //不触发onchched alert("本地缓存正在更新中。。。"); if(confirm("是否从新载入已更新文件")){ applicationCache.swapCache(); location.reload(); } }也就是说若是不调用该方法,用户须要手动刷新页面才能看到更新后的方法
applicationCache.onchecking = function(){ //检查manifest文件是否存在 } applicationCache.ondownloading = function(){ //检查到有manifest或者manifest文件 //已更新就执行下载操做 //即便须要缓存的文件在请求时服务器已经返回过了 } applicationCache.onnoupdate = function(){ //返回304表示没有更新,通知浏览器直接使用本地文件 } applicationCache.onprogress = function(){ //下载的时候周期性的触发,能够经过它 //获取已经下载的文件个数 } applicationCache.oncached = function(){ //下载结束后触发,表示缓存成功 } application.onupdateready = function(){ //第二次载入,若是manifest被更新 //在下载结束时候触发 //不触发onchched alert("本地缓存正在更新中。。。"); if(confirm("是否从新载入已更新文件")){ applicationCache.swapCache(); location.reload(); } } applicationCache.onobsolete = function(){ //未找到文件,返回404或者401时候触发 } applicationCache.onerror = function(){ //其余和离线存储有关的错误 }