什么是应用程序缓存(Application Cache)? 
HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。 
应用程序缓存为应用带来三个优势: 
离线浏览 - 用户可在应用离线时使用它们 
速度 - 已缓存资源加载得更快 
减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

浏览器支持 
所有主流浏览器均支持应用程序缓存,除了 Internet Explorer。

Cache Manifest 基础 
如需启用应用程序缓存,请在文档的 <html> 标签中包含 manifest 属性:

  1. <!DOCTYPE HTML>
  2. <html manifest="demo.appcache">
  3. ...
  4. </html>

每个指定了 manifest 的页面在用户对其访问时都会被缓存。如果未指定 manifest 属性,则页面不会被缓存(除非在 manifest 文件中直接指定了该页面)。 
manifest 文件的建议的文件扩展名是:".appcache"。 
请注意,manifest 文件需要配置正确的 MIME-type,即 "text/cache-manifest"。必须在 web 服务器上进行配置。

Manifest 文件 
manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。 
manifest 文件可分为三个部分: 
CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存 
NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存 
FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

上述资料copy自http://www.w3school.com.cn/html5/html_5_app_cache.asp 
下面贴一下我自己操作的流程: 
1、web容器配置。Application Cache的核心是manifest 文件,要加载manifest 文件,就要先让web容易认识这个东东,所以要先配置MIME-type 映射。我用的是tomcat容器,找到conf/web.xml文件,在那一大堆<mime-mapping>后面加上manifest配置

  1. <!--html5 mime-type setting -->
  2. <mime-mapping>
  3. <extension>manifest</extension>
  4. <mime-type>text/cache-manifest</mime-type>
  5. </mime-mapping>
  6. <!--html5 mime-type setting -->

,保存重启,完成第一步。

2、编写manifest文件。我的manifest文件为cache/demo.appcache,内容入下:

  1. CACHE MANIFEST
  2. # 2012-11-01 v1.0.0
  3. ../image/baidu_sylogo1.gif
  4. NETWORK:
  5. ../image/cat.gif
  6. FALLBACK:
  7. 404.html

3、html使用manifest文件。

  1. <!DOCTYPE>
  2. <html  manifest="../cache/demo.appcache">
  3. <head>
  4. <title>test4.html</title>
  5. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  6. <meta http-equiv="description" content="this is my page">
  7. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  8. </head>
  9. <body>
  10. <div>
  11. <img alt="aaa" src="../image/baidu_sylogo1.gif" >
  12. <img id="msg" alt="bbb" src="" >
  13. <script type="text/javascript">
  14. var msg=document.getElementById("msg");
  15. msg.src='../image/cat.gif';
  16. </script>
  17. </div>
  18. </body>
  19. </html>

baidu_sylogo1.gif为缓存,而cat.gif是直接从服务器读取。

4、测试。笔者用chrome测试了一下正常显示,firefox也OK。不过PC上看不出啥来(比较明显的是manifest 文件中的路径配置错误,debug模式会报错,正常的情况下浏览器会提示是否使用xxx网站提供的静态数据),我用我自己的手机测试了一下,效果比较明显(WI-FI坏境下)。刷新页面的速度很快,关闭WI-FI时,重新刷页面,可以看到第一个图片,而第二个图片显示不出来。

 FROM :http://xiaofengyu.iteye.com/blog/1711518

HTML 5 学习之应用程序缓存的更多相关文章

  1. HTML5学习(九)----应用程序缓存

    参考教程:http://www.w3school.com.cn/html5/html_5_app_cache.asp 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 w ...

  2. HTML5 学习笔记 应用程序缓存

    使用html5 通过创建cache manifest文件,可以轻松地创建web应用的离线版本. html5引入了应用程序缓存,这意味着web应用可进行缓存,并可在没有因特网连接时进行访问. 应用程序缓 ...

  3. 从零开始学 Web 之 HTML5(三)网络监听,全屏,文件读取,地理定位接口,应用程序缓存

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  4. 13本热门书籍免费送!(Python、SpingBoot、Entity Framework、Ionic、MySQL、深度学习、小程序开发等)

    七月第一周,网易云社区联合清华大学出版社为大家送出13本数据分析以及移动开发的书籍(Python.SpingBoot.Entity Framework.Ionic.MySQL.深度学习.小程序开发等) ...

  5. HTML 5 应用程序缓存manifest

    什么是应用程序缓存(Application Cache)? HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. 应用程序缓存为应用带来三个优势: 离线浏 ...

  6. HTML5应用程序缓存Application Cache

    什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. A ...

  7. HTML 5 应用程序缓存(下)

    Manifest 文件manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容). manifest 文件可分为三个部分: CACHE MANIFEST - 在此标题下列出的 ...

  8. HTML 5 应用程序缓存(上)

    什么是应用程序缓存(Application Cache)?HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. 应用程序缓存为应用带来三个优势: 离线浏览 ...

  9. MyBatis学习总结(七)——Mybatis缓存(转载)

      孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的 ...

随机推荐

  1. .Net中如何使用MySql连接池

    提供一份官方的译文.翻译也挺辛苦的!! 6.4 Using Connector/Net with Connection Pooling 6.4在Connector/Net中使用连接池 The Conn ...

  2. 基本的 html 代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 198. House Robber,213. House Robber II

    198. House Robber Total Accepted: 45873 Total Submissions: 142855 Difficulty: Easy You are a profess ...

  4. Python调用C/C++动态链接库

    Python调用C/C++动态链接库 2013年07月26日 ⁄ 综合 ⁄ 共 3219字 ⁄ 字号 小 中 大 ⁄ 评论关闭   吐槽(可略过):不知不觉,4月份毕业,5月份进入团队,已有7个月.大 ...

  5. SimpleDateFormat的使用

    SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (date -> text).语法分析 (text -> date)和标准化. 下面是个小 ...

  6. java学习一目了然——异常必知

    java学习一目了然--异常必知 我们只要学java,异常肯定非常熟悉,该抛的时候抛一下就行.但是这其中还有点小细节需要注意.就用这个小短篇来说一下异常处理中的小细节吧. 异常处理 RuntimeEx ...

  7. SSAS父子层次结构的增强-UnaryOperatorColumn属性

    上次我有讲到自定义汇总,这次的内容跟上次的差不多也算是自定义汇总,实现的方式不同而已!使用的是UnaryOperatorColumn属性. 这个属性说明: 一元运算符用于将成员自定义汇总到父级,汇总运 ...

  8. filestream streamreader

    filestream是一个读取文件的stream,其本身也是支持read和write的,负责的对文件的读与写,而streamreader则是建立在对流的基础上的读,同时还有streamwrite ht ...

  9. Android实现ListView或GridView首行/尾行距离屏幕边缘距离

    直接上关键属性: 设置ListView或GridView的android:clipToPadding = true, 然后通过paddingTop和paddingBottom设置距离就好了.

  10. [Leetcode][Python]49: Anagrams

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 49: Anagramshttps://leetcode.com/proble ...