码迷,mamicode.com
首页 > Web开发 > 详细

HTML5 离线缓存

时间:2016-06-21 23:57:31      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:

离线资源缓存
  为了能够让用户在离线状态下继续访问 Web 应用,开发者需要提供一个 cache manifest 文件。这个文件中列出了所有需要在离线状态下使用的资源,浏览器会把这些资源缓存到本地。本节先通过一个例子展示 cache manifest 文件的用途,然后详细描述其书写方法,最后说明缓存的更新方式。
//在IIS下最好使用 xxx.appcache文件

原因:

技术分享技术分享

cache manifest 格式
下面说明书写 cache manifest 文件需要遵循的格式。

  1. 首行必须是 CACHE MANIFEST。
  2. 其后,每一行列出一个需要缓存的资源文件名。
  3. 可根据需要列出在线访问的白名单。白名单中的所有资源不会被缓存,在使用时将直接在线访问。声明白名单使用 NETWORK:标识符。
  4. 如果在白名单后还要补充需要缓存的资源,可以使用 CACHE:标识符。
  5. 如果要声明某 URI 不能访问时的替补 URI,可以使用 FALLBACK:标识符。其后的每一行包含两个 URI,当第一个 URI 不可访问时,浏览器将尝试使用第二个 URI。
  6. 注释要另起一行,以 # 号开头。

mainfest清单格式实例:

CACHE MANIFEST
#上面一句必须
#v1.0.0
#需要缓存的文件
CACHE:
a.js
b.css
#不需要缓存的文件
NETWORK:
*
#无法访问页面
FALLBACK:
404.html

更新缓存
应用程序可以等待浏览器自动更新缓存,也可以使用 Javascript 接口手动触发更新。
自动更新
浏览器除了在第一次访问 Web 应用时缓存资源外,只会在 cache manifest 文件本身发生变化时更新缓存。而 cache manifest 中的资源文件发生变化并不会触发更新。
手动更新
开发者也可以使用 window.applicationCache 的接口更新缓存。方法是检测 window.applicationCache.status 的值,如果是 UPDATEREADY,那么可以调用 window.applicationCache.update() 更新缓存。示范代码如下。
清单 5 手动更新缓存

window.applicationCache.addEventListener(‘updateready‘,function(e){
    if(window.applicationCache.status == window.applicationCache.UPDATEREADY){
        window.applicationCache.swapCache();
        
        if(confirm("loding new?")){
            window.location.reload()
        }
    }
},false)    

注意点:
1.对于每个index.html?id=1或index.html?id=2都会分别缓存index.html页面,可以通过chrome浏览器Resources/Application Cache观察

2.manifest文件的mime-type必须是 text/cache-manifest类型

3.mainfest文件中的路径和页面使用的路径,应该一直,区分大小写、

实例代码:

1.新建clock.appcache文件

技术分享
CACHE MANIFEST
 #上面一句必须
 # v1.0.4
 # 需要缓存的文件
 CACHE:
/view/clock.html
/js/clock.js
/js/jquery-1.11.3.min.js


#不需要缓存的文件
NETWORK:
/css/clock.css

#无法访问的页面
FALLBACK:
404.html
View Code

2.添加clock.html文件,引用mainfest文件

关键代码:

<html manifest="../Cache/clock.appcache">
技术分享
<!DOCTYPE html>
<html manifest="../Cache/clock.appcache">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <meta charset="utf-8" />
    <link href="../css/clock.css" rel="stylesheet" />
</head>
<body>
    <p>
        The time is :<output id="clock"></output>
    </p>
    <p>
        <a href="404.html">404.html</a>
    </p>
    <script src="../js/jquery-1.11.3.min.js"></script>
    <script src="../js/clock.js"></script>
</body>
</html>
View Code

3.项目结构

技术分享

4.监视结果:

技术分享

技术分享

 

HTML5 离线缓存

标签:

原文地址:http://www.cnblogs.com/tianma3798/p/5605211.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!