在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
起源 html5便引入了cache manifest 文件。那么什么是cache manifest呢,接下来会讲到。 什么是Cache Manifest 当我们第一次正确配置app cache后,当我们再次访问该应用时,浏览器会首先检查manifest文件是否有变动,如果有变动就会把相应的变得跟新下来,同时改变浏览器里面的app cache,如果没有变动,就会直接把app cache的资源返回,基本流程是这样的。 Manifest的特点 更快的速度: 因为数据被存储在本地,所以速度会更快. 减轻服务器的负载: 浏览器只会下载在服务器上发生改变的资源。 浏览器支持情况 如何使用 创建一个和html同名的manifest文件,比如页面为index.html,那么可以建一个index.manifest的文件,然后给index.html的html标签添加如下属性即可: XML/HTML Code复制内容到剪贴板
Manifest文件 CACHE MANIFEST#version 1.3CACHE: test.cssNETWORK:* 而第一行CACHE MANIFEST为固定格式,必须写在前面。 以#号开头的是注释,一般会在第二行写个版本号,用来在缓存的文件更新时,更改manifest的作用,可以是版本号,时间戳或者md5码等等。 CACHE:(必须) a.csshttp://yanhaijing.com/a.css 这一部分是要绕过缓存直接读取的文件,可以使用通配符*。 下面的代码 “login.asp” 永远不会被缓存,且离线时是不可用的: NETWORK:login.asp NETWORK:* ###FALLBACK:(可选) 下面的例子中,如果无法建立因特网连接,则用 “404.html” 替代 /html5/ 目录中的所有文件。 FALLBACK:/html5/ /404.html FALLBACK:*.html /404.html (1)更新manifest文件 (2)通过javascript操作 (3)清除浏览器缓存 给manifest添加或删除文件,都可更新缓存,如果我们更改了js,而没有新增或删除,前面例子中注释中的版本号,可以很好的用来更新manifest文件。 html5中引入了js操作离线缓存的方法,下面的js可以手动更新本地缓存。 window.applicationCache.update(); 注意事项 如果manifest文件,或者内部列举的某一个文件不能正常下载,整个更新过程都将失败,浏览器继续全部使用老的缓存。 引用manifest的html必须与manifest文件同源,在同一个域下。 FALLBACK中的资源必须和manifest文件同源。 当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问缓存中的资源。 站点中的其他页面即使没有设置manifest属性,请求的资源如果在缓存中也从缓存中访问。 当manifest文件发生改变时,资源请求本身也会触发更新。 自动化工具 如下的命令可以安装grunt-manifest,并加入到依赖文件。 复制代码 代码如下:npm install grunt-manifest --save-dev 如下的代码,可以在grunt中载入grunt-manifest,然后便可使用。 复制代码 代码如下:grunt.loadNpmTasks('grunt-manifest'); 使用grunt-manifest的一个典型的配置文件如下所示: 复制代码 代码如下:</p>
<p>grunt.initConfig({
manifest: { generate: { options: { basePath: "../", cache: ["js/app.js", "css/style.css"] network: ["http://*", "https://*"], fallback: ["/ /offline.html"], exclude: ["js/jquery.min.js"], preferOnline: true, verbose: true, timestamp: true }, src: [ "some_files/*.html", "js/*.min.js", "css/*.css" ], dest: "index.manifest" } } });
options下有很多参数,主要参数如下: basePath 设置出入文件的根目录 cache 手动添加缓存文件 network 手动添加网络文件 fallback 手动添加后备文件 exclude 设置不添加到cache的文件 verbose 是否添加版权信息 timestamp是否添加时间戳 示例 要使用manifest缓存,我们首先需要写一个manifest文件。这个文件有严格的格式要求,下面是个例子 复制代码 代码如下:</p>
<p>CACHE MANIFEST #我是注释,这个文件名叫test.manifest CACHE: /test.css /test.js 这就是一个简单的manifest文件。一开始必须是“CACHE MANIFEST”来声明这是一个manifest文件。后面的“CACHE:”是操作类型,再后面的两个文件按路径是“CACHE:”这个操作类型作用的文件,表示这些文件需要缓存。当然,操作类型不止CACHE一种,这个后面再说。我们先来说说大家最关心的问题。这个manifest文件怎么使用? 使用manifest文件只要在页面的HTML标签中加入一个属性“manifest="manifest文件路径"”就可以了,比如 XML/HTML Code复制内容到剪贴板
这个页面就使用了上面写的manifest文件,我们用Chrome打开这个页面就可以在控制台中找到这个manifest的工作信息。 从这个信息中可以看出,我们设置的需要缓存的两个文件都缓存了。而且引用manifest的那个页面也被缓存了。这个很重要,这个是manifest的机制,它除了会缓存设置好的文件之外,还会缓存当前引用manifest文件的页面(想关都关不掉)。所以使用起来很不方便,这就需要注意。 复制代码 代码如下:CACHE MANIFEST NETWORK: * FALLBACK是不存在是使用另一个文件替代,下面是个例子 复制代码 代码如下:CACHE MANIFEST #test.manifest FALLBACK: /x.css /test.css XML/HTML Code复制内容到剪贴板
由于x.css不存在,所以缓存时候采用了test.css来代替它。 这就是这个东西最蛋疼的地方,所以现在先稍稍了解下,不去深入研究。等以后这些问题都解决了在来回头看这货吧。其实manifest的作用是把Web应用本地化,如果仅仅是做“Web应用本地化”,确实可以用上。但是这个东西在其他方面实在是不给力。所以目前的项目都不会考虑用这党疼的玩意儿。上面的这么多也只是入门级的测试,还有好多东西需要测试。不过由于现在用不上,暂时就不研究了。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论