zoukankan      html  css  js  c++  java
  • html5 Application Cache 机制以及使用

     

    那什么是Application Cache呢?

    顾名思义,AppCache就是对app内存缓存的方案,具体表现为当请求某个文件时不是从网络获取该文件,而是从本地内存中获取.

    Application Cache好处

    应用程序缓存为应用带来三个优势:
    • 离线浏览 - 用户可在应用离线时使用它们
    • 速度 - 已缓存资源加载得更快
    • 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源

    说了这么多怎么使用App?

    • 新建一个manifest 文件(这里需要注意了IIS 中的MEMI类型中可能不能识别manifest 后缀的文件可能需要在iis 中MEMI类型中添加manifest 类型)
    • 编写manifest 文件示例如下
    • CACHE MANIFEST
      
      CACHE:
      # 需要缓存的列表
      /script/index.js
      
      NETWORK:
      # 不需要缓存的
      默认值我一般写*
      
      FALLBACK:
      # 访问缓存失败后,备用访问的资源,第一个是访问源,第二个是替换文件*.html /offline.html
      2.jpg/3.jpg
    • 将需要引用Application Cache的页面头部加上manifest属性示例:
    • <html manifest="~/Manifest/CMServer.manifest"> 

    Application Cache需要注意

    • 浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。
    • 一旦文件被缓存,则浏览器会继续展示已缓存的版本,即使您修改了服务器上的文件。为了确保浏览器更新缓存,您需要更新 manifest 文件

    ApplicationCache对象

    applicationCache对象代表了本地缓存,可以在js中进行一些操作。可以用它来通知用户本地缓存中已经被更新,也允许用户手工更新本地缓存。

    applicationCache.addEventListener("updateready",function(){
    alert("本地缓存已被更新,您可以刷新页面来得到本程序的最新版本");
    },true);
    一个比较有意思的用法:
    setInterval(function(){
    // 手工检查是否有更新
    applicationCache.update(); 
    },5000);
    applicationCache.addEventListener("updateready",function(){
    if(confirm("本地缓存已被更新,需要刷新页面来获取应用程序最新版本,是否刷新?")){
    // 手工更新本地缓存
    applicationCache.swapCache();
    // 重载页面
    location.reload();
    }
    },true);

    【applicationCache对象的事件】

    • applicationCache可以监听的事件还有:
    • checking ---- 浏览器发现网页具有manifest属性,触发checking事件,检查manifest文件是否存在。不存在时,触发error事件。
    • noupdate ---- 见downloading。
    • downloading ---- 浏览器检查到manifest文件,判断文件是否被更新,如果文件未更新,触发noupdate事件,否则触发downloading事件,然后开发下载这些资源。在下载的同时,周期性地触发progress事件。
    • progress ---- 见downloading。
    • updateready ---- 见cached。
    • cached ---- manifest文件中要求的缓存文件全部下载结束后,如果是首次缓存,触发cached事件,表示首次缓存成功,如果是更新manifest文件引起的重新下载,下载结束后不触发cached事件,而是触发updateready事件。
    • error ---- 见checking。
    • 首次访问网页时,依次触发的事件为:checking、downloading、progress、progress、cached
    • 再次打开网页,且manifest文件没有更新时:noupdate
    • 再次打开网页,且manifest文件已被更新时:downloading、progress、progress、updateready

    #html5

  • 相关阅读:
    汇编/操作系统 索引帖
    极地网络
    河中跳房子游戏
    搬家大吉QAQQAQ
    【USACO3.1.1】Agri-Net最短网络
    浅谈二叉树
    Android面试经验汇总(二)
    Android面试经验汇总(一)
    Android 聊天室(二)
    Android 聊天室(一)
  • 原文地址:https://www.cnblogs.com/chongyao/p/6208273.html
Copyright © 2011-2022 走看看