HTML5 离线应用之打造零请求、无流量网站的解决方法


Posted in HTML / CSS onApril 25, 2013

前言

今天Web应用程序已经很复杂了,以现在的发展,会将越来越复杂,但他有一个致命缺点,不能脱离internet链接,因此在HTML中新增了一API,

它使用一个本地存储机制很好地解决了这个问题,为离线web应用铺平了道路。
本地缓存于浏览器缓存

复制代码
代码如下:

本地缓存是为整个web应用程序服务
浏览器缓存只对单个网页服务</p> <p>任何网页都具有网页缓存
本地缓存只缓存那些你指定缓存的页面</p> <p>网页缓存不可靠、不安全,因为我们不知道网站中到底缓存了哪些页面、哪些资源
本地缓存可以控制对哪些内容进行缓存

manifest文件

web应用程序本地缓存是通过每个页面的manifest文件来管理的,manifest是一简单文本,在该文件中以清单的形式列举了需要被缓存的不需要被缓存的文件的名字、路径。

可以为每个页面单独指定manifest也可以为整个应用程序指定,例我们为hello.htm的设置:

复制代码
代码如下:

CACHE MANIFEST
CACHE:
other.html
hellow.js
images/myphoto.jpg
NETWORK:
http://LuLinniu/NotOffline
NotOffline.asp
*
FALLBACK:
online.js locale.js
CACHE:
newhellow.html
newhellow.js

在manifest文件中,第一行必须是CACHE MANIFEST,以把文本的作用告诉浏览器,即对本地缓存中的资源文件进行具体设置。
同时真正运行离线web应用程序时,需要对服务器进行配置,让服务器支持text/cache-manifest这个mime类型。

在指定文件源文件时可以把资源文件分为三类,CACHE、NETWORK、FALLBACK

复制代码
代码如下:
</p> <p>在CACHE类别中指定需要被缓存在本地的资源文件,为某个页面指定需要本地缓存的资源文件时,不需要把这个页面本身指定在CACHE类别中,
因为如果一个页面具有manifest文件,浏览器会自动对该页面进行本地缓存</p> <p>NETWORK类别为显式指定不进行缓存的资源文件,这些文件只有建立服务器端链接才能访问,本例使用通配符*表示没有进行记录的都不缓存</p> <p>FALLBACK类别中的每行中指定两个资源文件,第一个资源文件为能够在线访问时使用的资源文件,第二个为不能在线访问时使用的本地缓存文件

浏览器与服务器交互过程

当使用离线web应用程序进行工作时,有必要了解浏览器与服务器之间的交互过程:

复制代码
代码如下:

比如一个http://LuLingniu,以index.htm为主页,该主页使用index.manifest,
在文件中缓存index.htm,hello.js,hello.jpg,首次访问时流程如下:
浏览器请求url
服务器返回index.htm首页
浏览器解析index.htm网页,请求页面上所有资源文件
服务器返回资源文件
浏览器处理manifest文件,请求manifest中需要缓存的文件,即使请求过亦会再请求
服务器返回需要缓存的文件
浏览器对本地缓存进行更新,存入资源文件,并触发一个事件通知本地缓存更新</p> <p>再次打开该URL
请求url
浏览器发现页面被缓存,于是使用本地缓存文件
解析文件
浏览器像服务器请求manifest文件
服务器返回304,通知manifest文件没有变化(若是改变将会有所不同)

applicationCache对象

该对象代表了本地缓存,可以用它来通知用户本地缓存已经被更新,也允许手动更新本地缓存。

前面当浏览器对本地缓存做了更新装入新资源文件时,会触发applicationCache对象的updateready事件,通知本地缓存已被修改,然后提示用户手动刷新页面。
swapCache

swapCache方法用来手动执行本地缓存的更新,它只能在applicationCache对象的updateReady事件触发时调用,

即当资源文件发生改变时,可使用此方法手工缓存更新。

HTML / CSS 相关文章推荐
前端隐藏出边界内容的实现方法
Apr 14 HTML / CSS
HTML5的video标签的浏览器兼容性增强方案分享
May 19 HTML / CSS
微信浏览器左上角返回按钮拦截功能
Nov 21 HTML / CSS
H5仿微信界面教程(一)
Jul 05 HTML / CSS
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
May 28 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
Dec 09 HTML / CSS
html5 canvas-2.用canvas制作一个猜字母的小游戏
Jan 07 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
Apr 25 HTML / CSS
使用HTML5 Geolocation实现一个距离追踪器
Apr 09 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
Apr 23 HTML / CSS
血轮眼轮回眼特效 html+css
Mar 31 HTML / CSS
使用HTML+Css+transform实现3D导航栏的示例代码
Mar 31 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
Apr 25 #HTML / CSS
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
Apr 25 #HTML / CSS
基于HTML5 FileSystem API的使用介绍
Apr 24 #HTML / CSS
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
Apr 24 #HTML / CSS
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
Apr 24 #HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
Apr 24 #HTML / CSS
HTML5组件Canvas实现图像灰度化(步骤+实例效果)
Apr 22 #HTML / CSS
You might like
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
php微信公众号开发模式详解
2016/11/28 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
jquery实现相册一下滑动两次的方法
2015/02/09 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
webpack项目使用eslint建立代码规范实现
2019/05/16 Javascript
Python基础知识_浅谈用户交互
2017/05/31 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
python中如何打包用户自定义模块
2020/09/23 Python
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
妇产科护士自我鉴定
2013/10/15 职场文书
国贸专业个人求职信分享
2013/12/04 职场文书
化学学院毕业生自荐信范文
2013/12/17 职场文书
优秀高中生事迹材料
2014/02/11 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
MySQL索引失效场景及解决方案
2022/07/23 MySQL