html5 manifest缓存
2016-12-13 21:52
295 查看
html5 manifest缓存
html5给予了一个很好的webapp开发环境,有些时候我们会希望我们的应用像原生应用一般能被完全离线访问,而不同于我们所说的缓存优化,那我们就需要使用到html5 提供的mainfest标签,具体用法如下index.html
<!DOCTYPE html> <html lang="en" manifest="manifest.appcache"> <head> <meta charset="UTF-8"> <title>APP CACHE</title> <link rel="stylesheet" href="needCache.css"> <link rel="stylesheet" href="noCache.css"> </head> <body> <div class="box"></div> <script type="text/javascript"> window.applicationCache.addEventListener('updateready', function(){ console.log('updateready!'); window.applicationCache.swapCache(); }); </script> </html>
/manifest.appcache
CACHE MANIFEST #version 1.0 CACHE: needCache.css NETWORK: *
像上面这样在html标签中添加manifest属性指向离线配置文件即可,其中的配置项的意思如下:
关于index.manifest文件,基本格式为三段: CACHE, NETWORK,与 FALLBACK,其中NETWORK和FALLBACK为可选项,而第一行CACHE MANIFEST为固定格式,必须写在前面。
CACHE:(必须)
标识出哪些文件需要缓存,可以是相对路径也可以是绝对路径。例如:aa.css,http://www.baidu.com/aa.js.
NETWORK:(可选)
这一部分是要绕过缓存直接读取的文件,可以使用通配符*,,也就是说除了上面的cache文件,剩下的文件每次都要重新拉取。例如*,login.php。
FALLBACK:(可选)
指定了一个后备页面,当资源无法访问时,浏览器会使用该页面。该段落的每条记录都列出两个 URI—第一个表示资源,第二个表示后备页面。两个 URI 都必须使用相对路径并且与清单文件同源。可以使用通配符。例如*.html /404.html(所有html页面都替换为404页面)。
在此需要注意的:
浏览器限制了每个站点的缓存大小,通常为5MB
修改被缓存的文件后,需要同时修改manifest文件才能使缓存起作用
想要整个应用都能离线访问一定要把NETWORK的选项置空,但并不一定要把所有资源都放在CACHE上(经过简单的chrome offline测试过,如有不同的现象望提出)
测试离线缓存需要使用服务器端访问,如果使用webstorm等直接访问,并不能真正测试manifest
建议使用FALLBACK,可以增加用户体验
在不使用上面的js代码的时候,需要刷新两次才能看到改变的效果,这个也会妨碍到缓存的更新,建议- 配合上面的代码一同使用
站点中的其他页面即使没有设置manifest属性,请求的资源如果在缓存中也从缓存中访问
如果manifest文件,或者内部列举的某一个文件不能正常下载,整个更新过程将视为失败,浏览器继续全部使用老的缓存
参考资料
HTML5 离线缓存-manifest简介
相关文章推荐
- 用户自定义多选框checkbox
- HTML5中在客户端验证文件上传的大小
- html5 web数据存储
- 页面元素查找之Selectors API
- 使用ajax实现用户登录验证(升级版)
- Canvas 在高清屏下绘制图片变模糊的解决方法
- 关于前端的思考与感悟
- 新时代编辑神器:Atom
- rem : web app适配的秘密武器
- jquery高级应用之Deferred对象
- 又被事件冒泡坑了一把,这次要彻底弄懂浏览器的事件流
- 移动端点击事件全攻略,这里的坑你知多少?
- $q 实例分析 Angular 中的 Promise
- 浏览器中唤起native app || 跳转到应用商城下载
- Angular directive 实例详解
- 关于浮动与清除浮动,你应该知道的
- 数组reduce方法的高级技巧
- HTML5 语音波形显示,编辑,上传,下载