离线缓存的组成与使用情况

离线存储的manifest一般由三个部分组成

1.

CACHE表示需要离线存储的资源列表 由于包含manifest文件的页面也将被自动离线缓存 所以不需要把页面自身也写进去

2.

NETWORK表示在他下面列出来的资源只有在在线的情况下才能访问他们 不会被离线存储 所以在离线情况下无法使用这些资源 不过如果在CACHE和NETWORK中有一个相同的资源 那么这个资源还是会被离线存储 就是说CACHE的优先级比较高

3.

FALLBACK表示如果访问第一个资源失败 那么久使用第二个资源来替换他 如果访问根目录下的任何一个资源失败了 那就去访问指定的网页

浏览器如何解析manifest

两种情况

1.在线情况下

浏览器发现HTML的头部有manifest属性 它会直接去请求manifest文件 如果是第一次访问 那么浏览器会根据manifest文件的内容下载相应的资源并进行离线存储 如果已经访问过网站并且资源已经离线存储了 那么浏览器就会使用离线的资源加载页面 然后浏览器会对比新的manifest与manifest文件,如果文件没有发生改变 就不做任何操作 如果改变了 就会重新下载文件中的资源并进行离线存储

2.离线情况下

浏览器直接使用离线存储的资源

注意事项

引用manifest的html必须与manifest文件同源,在同一个域下,FALLBACK中的资源也必须和manifest文件同源。

​ 站点中的其他页面即使没有设置manifest属性,请求的资源如果在缓存中也从缓存中访问。

1、

如果服务器对离线的资源进行了更新,那么必须更新manifest文件之后这些资源才能被浏览器重新下载,如果只是更新了资源而没有更新manifest文件的话,浏览器并不会重新下载资源,也就是说他还是会使用原来离线存储的资源

2、

对于manifest文件进行缓存的时候需要十分小心,因为可能出现一种情况就是你对manifest文件进行了更新,但是http的缓存规则告诉浏览器本地缓存的manifest文件还没过期,这个情况下浏览器还是使用原来的manifest文件,所以对于manifest文件最好不要设置缓存

3、

浏览器在下载manifest文件中的资源的时候,他会一次性下载所有资源,如果某个资源由于某种原因下载失败,那么这次的所有更新就算是失败的,浏览器还是会使用原来的资源

4、

在更新了资源之后,新的资源需要下次再打开网站才会生效,如果需要资源马上生效,可以使用window.applicationCache.swapCache()方法来使之生效,出现这种现象的原因是浏览器会先使用离线资源加载页面,然后再去检查manifest是否有更新,所以需要到下次打开页面才能生效

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值