程序的离线缓存由一个叫做manifest的文本文件控制,把需要离线缓存的文件列在里面即可,这个列表还可以控制需要缓存的情况,甚至当用户从缓存地址进入到没有缓存的地址应该显示什么

当浏览器下载解析了manifest文件之后,就会换取这些资源并且保存起来无网络使用 ,格式如下:

CACHE MANIFEST     //告诉浏览器这是一个manifest文件

# This is a comment

CACHE:             //每一个部分标题使用大写,这里列出需要缓存的资源
/css/screen.css
/css/offline.css
/js/screen.js
/img/logo.png http://example.com/css/styles.css FALLBACK: //这里定义当一个没有网络的用户尝试跳转到没有缓存的地方时该显示什么
/one
.html /offline.html

NETWORK: //这里定义哪些资源只有连接网络时才可用
register.php
login.php
 
cache   是默认的,如果没有写标题的话,浏览器默认列表里的内容是需要缓存的资源,不能使用通配符(如/images/*)。另外当用户从一个没有声明需要缓存的页面进入另一个被缓存的页面,那么刚才进来的页面也会被恰当地缓存,因此可以利用这个特点,不需要把所有页面都列进去
fallback   每行包含两个值,使用空格隔开,当离线用户尝试访问第一个链接时,应该呈现第二个已经缓存了的页面。举例:
/ /offline.html       表示当离线用户访问所有没有缓存的页面都会转向offline,因为/匹配了所有页面
/images/avatars/ /offline_avatar.png    当离线用户访问/images/avatars/图片目录,会替换为offline_avatar.png
network  如果使用*号,表示除了cache里面的资源,其他都要求网络连接

<!DOCTYPE html>
<html lang="en" manifest="/offline.appcache"> //浏览器只会缓存带有manifest属性的页面
 // your html document
</html>
该文件同时需要使用 text/cache-manifest,在服务器提供相应的支持

一旦缓存成功下载,除非用户清除缓存或者更新manifest文件才会更新缓存,只是更新了服务器上的内容不会更新缓存的,如果只是更新了内容例如CSS文件,那么应该修改版本号触发更新。
CACHE MANIFEST
# Version 9
CACHE:
/css/screen.css
 
Browser bug: Firefox caches the manifest file itself and will not update it even if the manifest has changed on the server. With some server config wizardry, you can tell browsers that the cache of the manifest file is instantly invalidated and should be requested from the server every time it’s referenced. Add this to your .htaccess to put Firefox in its place:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/cache-manifest "access plus 0 seconds"
</IfModule>
http://html5doctor.com/go-offline-with-application-cache/

离线缓存 manifest的更多相关文章

  1. 记离线缓存(manifest)一大坑,断定其只适用于静态网站或离线应用

    今天看了离线缓存(manifest)方面的资料,兴冲冲地就想给自己的网站用上.待我把代码都写好部署上服务器,并测试过OK的时候,在SegmentFault刷了一把manifest方面的问答,才发现这个 ...

  2. HTML5 离线缓存manifest

    1.简介W3C官方对manifest的介绍是HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. 应用程序缓存为应用带来三个优势: 离线浏览 - 用户可在 ...

  3. HTML5离线缓存Manifest

    web app不比PC,有性能和流量方面的考虑,离线应用越来越重要,虽然浏览器有缓存机制,但是时常不靠谱,更何况普通情况下html文件是没法缓存的,断网之后一切over. 什么是manifest? 简 ...

  4. HTML5 离线缓存Appcache

    创建一个和html同名的manifest文件,比如页面为index.html,那么可以建一个index.manifest的文件,然后给index.html的html标签添加如下属性即可: <ht ...

  5. HTML5 manifest离线缓存

    一.基本概念 离线缓存是HTML5新引入的技术,能够让你的Web应用程序指定哪些文件可以缓存在本地,使得你的网络断开时依然可以通过本地的缓存来进行访问浏览. 二.使用方法 1. MIME type 声 ...

  6. H5离线缓存机制-manifest

    简介:Manifest 其实就是web应用的一种缓存机制,主要用于现在webapp应用中,它是浏览器自己的一种机制,随着移动互联网时代的到来,网络可靠性降低,如果我们已经将需要的文件缓存下下来,一旦网 ...

  7. html5 manifest 离线缓存知识点

    1.最大缓存容量为 5M. 2.manifest文件需要配置正确的MIME-type,即“text/cache-manifest”,这个是在web服务器上进行配置. ②编写.manifest文件,文件 ...

  8. HTML5 manifest离线缓存技术

    干什么用的? 离线缓存为的是第一次请求后,根据manifest文件进行本地缓存,并且在下一次请求后进行展示(若有缓存的话,无需再次进行请求而是直接调用缓存),最根本的感觉是它使得WEB从online可 ...

  9. HTML5离线缓存(Application Cache)

    HTML5离线缓存又名Application Cache,是从浏览器的缓存中分出来的一块缓存区,要想在这个缓存中保存数据,可以使用一个描述文件(manifest file),列出要下载和缓存的资源. ...

随机推荐

  1. Storm同步调用之DRPC模型探讨

    摘要:Storm的编程模型是一个有向无环图,决定了storm的spout接收到外部系统的请求后,spout并不能得到bolt的处理结果并将结果返回给外部请求.所以也就决定了storm无法提供对外部系统 ...

  2. mac pycharm 里table键设置为4个空格键

    Operation flow: File--Default Settings editor--code style--python

  3. leetCode in Java (一)

    前言    感觉写博客是一个很耗心力的东西T_T,简单的写了似乎没什么用,复杂的三言两语也只能讲个大概,呸呸...怎么能有这些消极思想呢QAQ!那想来想去,先开一个leetcode的坑,虽然已经工作了 ...

  4. 记一次坑爹的RSA旅程____快哭了555555555(来自实验吧的warmup的wp和感想)

    这么简单的题目搞了我那么久,森森感觉自己菜的不行....哎,努力吧少年,BXS已经全国第二了. 嗯,废话不说,这道题目来自实验吧的"warmup",附上链接 http://www. ...

  5. 认识jQuery的Promise

    先前了解了ES6的Promise对象,来看看jQuery中的Promise,也就是jQuery的Deferred对象. 打开浏览器的控制台先. <script> var defer = $ ...

  6. Windows+Apache2.4.10+PHP7.0+MySQL5.6.21安装

    一.安装包下载 apache2.4.10 http://www.apachelounge.com/download/win64/ PHP7.0.7 http://windows.php.net/dow ...

  7. DAO与DTO

    DAO叫数据访问对象(data access object) DTO是数据传输对象(data transfer object) DAO通常是将非对象数据(如关系数据库中的数据)以对象的方式操纵.(即一 ...

  8. WCF的客户端与服务端

    服务端 : 1.新增一个Winform的服务端 2.选择以上建的项目,增加一个WCF服务 3.定义三个方法,一个不返回结果不带参数.返回结果带参数.返回结果以类的方式传递参数 4.Service1继承 ...

  9. 原生js反转字符串

    //直接操作 var str='nama';var rts=str.split('').reverse().join(''); //String上拓展方法String.prototype.revers ...

  10. sa账户和密码丢失如何找回

    来自:http://www.cnblogs.com/xred/archive/2012/03/09/2386185.html 在网上看了很多如何修改SQLServer2005的密码的方法.大多数都是转 ...