`

html5初探——webapp离线策略(本地储存策略)

阅读更多

今日初探了一下webapp的离线策略。确实好用!建议大家都用上!

(下面会给一个例子,但只是基于safari,chrome和firefox测试。)

开发离线应用的缓存方法大概有4种(如下safari开发工具中的resources所示)

1.cookies(略):传统储存策略。缺点很明显:储存的容量过小,而且很容易被各种软件当垃圾清除,如360等。

2.Application Cachet资源缓存:在html中指定一个manifest文件,给文件中罗列出需要缓存的资源文件列表。浏览器根据资源列表对资源文件缓存。

3.Dom Storage:这一种基于key/value的格式。

DOM Storage 分为两类:sessionStorage 和 localStorage。除了以下区别外,这两类存储对象的功能是完全一致的。

  1. sessionStorage 用于存储与当前浏览器窗口关联的数据。窗口关闭后,sessionStorage 中存储的数据将无法使用。
  2. localStorage 用于长期存储数据。窗口关闭后,localStorage 中的数据仍然可以被访问。所有浏览器窗口可以共享 localStorage 的数据.
4.web sql Databases:除 了 DOM Storage 以外,HTML5 中还有另外一种数据存储方式 Web SQL Database。它提供了基本的关系数据库功能,支持页面上的复杂的、交互式的数据存储。它既可以用来存储用户产生的数据,也可以作为从服务器获取数据 的本地高速缓存。例如可以把电子邮件、日程等数据存储到数据库中。Web SQL Database 支持数据库事务的概念,从而保证了即使多个浏览器窗口操作同一数据,也不会产生冲突。

示例:(这才是重点啊!)
目前我只尝试过Application Cache,所以也只给出这个例子。
开发环境:Apache+php+(windows下的safari,chrome,firefox)/ipod touch下的safari
目的:缓存我指定的index.html和其中的jquery.js资源文件。index.html中的图片不缓存。
文件目录分布如下:
/jqueryapp/
---------------------------------------------
1.index.html
2.jquery.js
3.tetris.php(可能大家觉得这个文件很奇怪,其实是用来发送manifest的mime type的。不然就要修改apache的mime.types或者用.htaccess,很多人没有这个条件,比如我)
4.tetris.manifest
---------------------------------------------
index.html代码
[plain] view plain copy
  1. <!DOCTYPE html>  
  2. <html manifest="tetris.php">  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <meta name="viewport" content="width=device-width, initial-scale=1">  
  6.     <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"/>   
  7.     <meta name="apple-mobile-web-app-capable" content="yes" />   
  8.     <meta name="apple-mobile-web-app-status-bar-style" content="black" />   
  9.     <link rel="apple-touch-icon" href="iphon_tetris_icon.png"/>   
  10.     <link rel="apple-touch-startup-image" href="startup.png" />  
  11.   
  12.     <title>appdig</title>  
  13.   
  14.     <script src="jquery.js"></script>  
  15.   
  16. <span style="white-space:pre">  </span><style type="text/css">  
  17. <span style="white-space:pre">      </span>body,div,ul,li,p,span,img{  
  18.     <span style="white-space:pre">  </span>margin:0px;  
  19.     <span style="white-space:pre">  </span>padding:0px;  
  20.     <span style="white-space:pre">  </span>}……  
<!DOCTYPE html>是用来声明它是一个html5文档。
<html manifest="tetris.php">加上 manifest="tetris.php"来指定资源列表文件。tetris.php就是指定需要缓存的资源文件列表。
tetris.php代码
[plain] view plain copy
  1. <?php  
  2. header('Content-Type: text/cache-manifest');  
  3. readfile('tetris.manifest');  
先发送header头部,确定这是一个text/cache-manifest类型文件。再把tetris.manifest中的列表都进来。
tetris.manifes代码
[plain] view plain copy
  1. CACHE MANIFEST   
  2.  index.html   
  3.  jquery.js  
有些文章说包涵manifest的html可以不用写自身。我试了,不写真的也可以。
再说说manifest的书写规则吧。
第一行必须写上CACHE MANIFEST,然后每个资源文件一行,注释用#。

后记:关于manifest的mime type声明
html5提供的这种方法必须保证<html manifest="文本文件">中的文本文件(任意名字和任意扩展名)是t ext/cache-manifest类型的。即其header必须声明其类型是t ext/cache-manifest的。

其实如果你有修改apache服务器或者别的web服务器的权限你完全可以不用tetris.php这个文件。在index.html中的直接用 <html manifest="tetris.manifest">就可以。
修改apache的mime.types配置文件,在其中加上下面这句。
text/cache-manifest            manifest
或者用.htaccess,加添下面那句(我没尝试)。
AddType text/cache-manifest 用我上面的方法的好处就是不用修改和添加任何配置文件。利用php来发送header来告诉浏览器我是text/cache-manifest类型的。
参考资料:
1.http://www.ibm.com/developerworks/cn/web/1011_guozb_html5off/   非常的详细讲解了离线应用的储存策略
3.http://www.yiiyaa.net/1414  详细讲了manifest的用法
 
示例代码下载地址(有错的给我留言):manifest.rar
分享到:
评论

相关推荐

    Web基础——WebApp之初体验(三)

    此外,利用Service Worker和离线存储技术,可以实现WebApp的离线访问,提高可用性。 最后,Web安全是WebApp开发不可忽视的一环。HTTPS协议确保了数据传输的安全,防止中间人攻击。同时,开发者还需要关注XSS(跨站...

    前端经典——webApp登录校验及封装.rar

    前端经典——webApp登录校验及封装

    使用HTML5结合Vuejs开发离线记事本webapp项目源码

    在本项目中,“使用HTML5结合Vuejs开发离线记事本webapp”是一个现代Web应用程序的实例,它利用了HTML5的新特性以及Vue.js框架的优势。以下是该项目涉及的主要知识点和详细说明: 1. **HTML5**: HTML5是超文本标记...

    基于HTML5开发的WebApp阅读器.zip

    综上所述,基于HTML5开发的WebApp阅读器充分利用了HTML5的各项特性,如多媒体支持、离线存储、拖放操作、地理定位、Web Storage和Web Workers等,打造出一款功能强大、用户体验优良的在线阅读平台。同时,HTML5的...

    基于dclound旗下html5+的webApp调用原生支付插件.zip

    HTML5引入了许多新特性,如离线存储、拖放功能、媒体元素、 canvas 画布、svg矢量图、geolocation 定位等,极大地扩展了Web开发的边界,使得在浏览器中构建复杂的WebApp成为可能。 【标签】"html5 多媒体 游戏"意味...

    html5封装webapp调用手机蓝牙连接蓝牙设备并写入数据

    在本项目中,我们关注的是HTML5如何被用来创建一个Web应用程序(Webapp),这个应用可以调用手机的蓝牙功能,连接低功耗蓝牙(BLE)设备,并向这些设备写入数据。这样的功能使得Webapp能够与各种物联网(IoT)设备...

    HTML5+JQuery Mobile 移动端WebApp案例

    1. **离线存储**(Offline Storage):通过`localStorage`和`sessionStorage`,HTML5允许网页在用户浏览器中存储数据,即使在无网络连接时也能访问。 2. **表单控件**:新的表单输入类型如`date`, `datetime-local`...

    html5集合Vuejs开发商品日常卖记录、统计收入结果webapp项目代码

    【标题】:“html5集合Vuejs开发商品日常卖记录、统计收入结果webapp项目代码”这一主题涉及到现代前端开发中的关键技术,HTML5和Vue.js,以及如何构建一个实用的Web应用程序来跟踪销售数据并进行收入统计。...

    一个基于HTML5的简单webAPP.zip

    1. **离线存储(Offline Storage)**:HTML5引入了离线存储机制,如Application Cache,允许开发者将部分网站内容缓存到本地,即使在网络不稳定或无网络连接时,用户也能访问这些页面。 2. **Canvas与SVG**:Canvas...

    基于HTML5的移动端网盘webapp.zip

    二、文件系统API:HTML5的File System API允许Web应用在用户的本地存储文件,这对于网盘应用来说至关重要。通过这个API,用户可以选择上传、下载、管理文件,同时还可以进行文件的读写操作,实现了类似桌面应用的...

    汽车webapp html5源码

    5. **其他文件**:可能还包括图标字体(如Font Awesome)、JSON数据文件(用于存储车型信息)、字体文件等,这些都是构建WebAPP时必不可少的资源。 学习和分析这个源码,开发者可以了解到如何在HTML5环境中构建一个...

    创建离线iPhoneWebApp的教程

    随着HTML5的普及,离线存储功能使得Web App能够在用户的设备上本地存储数据和资源,从而实现离线运行。 创建离线Web App的基本步骤如下: 1. **应用缓存配置**:你需要创建一个清单文件(如`tetris.manifest`),...

    基于zepto的移动端日历插件,适用于HTML5制作的webAPP.zip

    在HTML5的环境下,这样的插件可以通过本地存储或Web Storage API来保存用户的日历数据,即使在离线状态下也能访问。 **dataPicker-master**: 这个文件名暗示我们可能是在处理一个Git仓库的主分支,或者是一个包含了...

    html5封装webapp调用手机蓝牙连接蓝牙设备并实现收发数据

    从晚上下载的例子,发现不能自动获取设备、服务和特征值,这就导致了程序通用性大大降低,在通过自己的摸索后,将这部分功能调试通过,现在已经是一个通用的webapp调用ble的程序了,功能包括搜索、连接蓝牙,选取...

    基于HTML5、vue的webApp书城.zip

    2. **离线存储(Offline Storage)**:HTML5的离线存储机制(Application Cache)允许开发者将部分资源缓存到本地,即使在网络不稳定或无网络的情况下,也能保证WebApp的正常运行。 3. **Canvas绘图**:HTML5的元素...

    一个基于HTML5和NODEJS的WEBAPP框架.zip

    HTML5是现代Web开发的标准,它提供了许多增强功能,如离线存储、多媒体支持、更好的图形处理以及对移动设备的优化。而Node.js则是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript...

    Html5与webapp

    Html5与webapp课程讲义:介绍了Html5有趣应用 特效、图书馆应用演示、WAP 和 Web App区别、Web App 缺陷等

    基于Html5的webapp.pdf

    3. **离线存储**:通过Cache Manifest文件,HTML5允许开发者将部分网页内容缓存到本地,使得用户在离线状态下也能访问部分Web应用,提升了用户体验。 4. **实时通信**:HTML5的Server-Sent Events和WebSocket技术...

    微信场景应用 全屏onepage页面 webapp html5 实例 可直接用于生产环境

    同时,HTML5提供了离线存储(离线缓存)和拖放功能,使网页在没有网络连接的情况下也能运行,以及优化了移动端的兼容性和性能。 2. **移动端开发**:针对手机和平板电脑等移动设备进行的网页设计和开发,需要考虑...

Global site tag (gtag.js) - Google Analytics