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 相关文章推荐
css3实现波纹特效、H5实现动态波浪效果
Jan 31 HTML / CSS
使用CSS3在触屏上为按钮实现激活效果
Sep 27 HTML / CSS
css3实现超炫风车特效
Nov 12 HTML / CSS
CSS3下的渐变文字效果实现示例
Mar 02 HTML / CSS
CSS3实现文本垂直排列的方法
Jul 10 HTML / CSS
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
Jan 27 HTML / CSS
HTML5 常用语法一览(列举不支持的属性)
Jan 26 HTML / CSS
html5 web本地存储将取代我们的cookie
Dec 26 HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
Jun 24 HTML / CSS
5个你不知道的HTML5的接口介绍
Aug 07 HTML / CSS
CSS精灵图的原理与使用方法介绍
Mar 17 HTML / CSS
使用CSS实现按钮边缘跑马灯动画
May 07 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 构造函数construct的前下划线是双的_
2009/12/08 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
laravel 实现设置时区的简单方法
2019/10/10 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
js实现漫天星星效果
2017/01/19 Javascript
js实现自定义路由
2017/02/04 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
简单的Python抓taobao图片爬虫
2014/10/26 Python
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
在Python中marshal对象序列化的相关知识
2015/07/01 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
Python reques接口测试框架实现代码
2020/07/28 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
strlen的几种不同实现方法
2013/05/31 面试题
投标保密承诺书
2014/05/19 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
追讨欠款律师函
2015/05/27 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
win7配置本地ftp服务器的图文教程
2022/08/05 Servers