web离线缓存

只愿长相守 提交于 2020-03-10 07:04:30

web应用程序本地缓存:通过每个页面的manifest文件来管理;

manifest

:文件是一个简单的文件夹,在该文件中,列举出需要被缓存或不需要缓存的文件资源的文件名称,文件的资源路径;可以为每个页面单独指定一个manifest文件,也可以为web应用程序指定总的manifest文件;
cache:指定需要缓存在本地的资源文件;
network:指定不进行本地缓存的文件 只有当客户端与服务器建立连接时才能访问;
fallback:指定两个资源文件,第一个在线访问时使用的资源文件,第二个不在线访问的资源文件;

浏览器和服务器交互过程

首次访问http://luling(index.html 主页 ,manifest文件为index.manifest文件请求缓存index.html,hello.js,hello1.jpg)
1.浏览器请求http://luling;
2.服务器返回给浏览器index.html;
3.浏览器解析index.html网页,请求网页上的所有资源(html,css,js,图片,以及manifest文件);
4.服务器返回浏览器所有资源;
5.浏览器处理manifest文件,请求需要被缓存的资源;
6.服务器返回浏览器需要请求的缓存资源;
7.浏览器对缓存资源进行更新;存入缓存 触发事件通知本地缓存被更新;
再次访问http://luling(manifest没有变化)
1.浏览器请求http://luling
2.浏览器发现index.html在缓存中有;
3.浏览器解析index.html网页,使用缓存中的资源
4.浏览器请求manifest文件
5.服务器返回304给浏览器;
再次访问http://luling(manifest发生变化)
1.浏览器请求http://luling
2.浏览器发现index.html在缓存中有;
3.浏览器解析index.html网页,使用缓存中的资源;
4.浏览器请求manifest文件;
5.服务器返回给浏览器更新过的manifest文件;
6.浏览器解析manifest文件,请求所有要缓存的资源;
7.服务器返回浏览器所有要缓存的资源;
8.浏览器缓存所有新的资源,触发事件通知本地缓存被更新;

applicationCathe对象代表了本地缓存
applicationCathe对象的updateready事件通知本地缓存已经被更新
applicationCathe对象swapCache手工执行本地缓存的更新;
1.只能在updateready事件调用后触发,updateready事件只能在manifest文件更新,并且已经下载完成了anifest要求的所有资源;
2.如果不写swapCathe方法,本队缓存将在下一次页面刷新被更新;
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!