《十三》HTML5 应用程序缓存 Application Cache

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

一旦应用被缓存,它就会保持缓存直到发生下列情况:manifest 文件被修改、用户清空浏览器缓存、程序更新应用缓存。

原理:

是基于 manifest 文件的缓存机制,通过 manifest 文件上的解析清单离线存储资源;之后当网络处于离线状态下时,浏览器会通过被离线存储的资源进行页面展示。

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

优缺点:

优点:

  1. 离线浏览:用户可在不介入网络时访问使用。
  2. 速度提升:使用缓存的资源,页面加载得更快。

缺点:实际上因为使用反响并不好,W3C 正在废弃 manifest。

  1. 服务器资源更新之后,会显示滞后,需要多刷新一次页面:浏览器会先使用旧的离线资源加载页面;然后对比新旧 manifest 发现变化后,重新下载离线资源并加载页面。
  2. 全量加载:当 manifest 文件更新时,所有的资源都要全部被下载一次,并且其中一个出现异常会导致整个 manifest 运行异常。

使用:

  1. 编写 manifest 文件:manifest 文件告知浏览器要缓存的内容以及不缓存的内容,它的建议文件扩展名是 .appcache
    manifest 文件可以分为三部分:
    • CACHE MANIFEST:必须,在此标题下列出的文件将在首次下载后进行缓存。
    • NETWORK:在此标题下列出的文件需要与服务器连接,且不会被缓存。可以使用 * 号来表示其他资源/文件都需要因特网连接。
    • FALLBACK:在此标题下列出的文件规定当页面无法访问时的回退页面。
      CACHE MANIFEST
      # 2012-02-21 v1.0.0  //以#开头的是注释行。
      /theme.css
      /logo.gif
      /main.js
      
      NETWORK:
      login.asp
      
      FALLBACK:
      /retail/ /404.html
      
  2. 在文档的 <html> 标签中配置 manifest 属性:引用 manifest 的 html 必须与 manifest 文件同源,在同一个域下。
    <!DOCTYPE HTML>
    <html manifest="app.appcache">
    ...
    </html>
    
  3. 后端对服务器进行配置。
  4. 监控 applicationCache 的状态,当更新之后,自动刷新。
    window.applicationCache.addEventListener('updateready', function(){
    	  window.location.reload();
    }, false);
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值