离线Web应用程序介绍
在HTML5中新增了一个API,为离线Web应用程序的开发提供了可能性。为了让Web应用程序在离线状态时也能正常工作,就必须要把所有构成Web应用程序的资源文件,诸如:HTML文件、CSS文件、JavaScript脚本文件等放在本地缓存中,当服务器没有和Internet建立连接的时候,也可以利用本地缓存中的资源文件来正常运行Web应用程序。
本地缓存与浏览器网页缓存的区别
首先,本地缓存是为整个Web应用程序服务的,而浏览器的网页缓存只服务于单个网页,任何网页都具有网页缓存,而本地缓存只缓存那些指定缓存的网页。
其次,网页缓存也是不安全、不可靠的,因为我们不知道在网站中到底缓存了哪些页面,以及缓存了网页上的哪些资源。而本地缓存是可靠的,我们可以控制对哪些内容进行缓存,不对哪些内容进行缓存,开发人员还可以用编程的手段来控制缓存的更新,利用缓存对象的各种属性、状态和事件来开发出更为强大的离线应用程序。
manifest文件
Web应用程序的本地缓存是通过每个页面的manifest文件来管理的。manifest文件是一个简单文本文件,在该文件中以清单的形式列举了需要被缓存或不需要被缓存的资源文件的文件名称、以及这些资源文件的访问路径。可以为每一个页面单独指定一个mainifest文件,也可以对整个Web应用程序指定一个总的manifest文件。manifest文件示例如下:
CACHE MANIFEST #文件的开头必须书CACHE MANIFEST #该manifest文件的版本号 #version 7 CACHE: other.html hello.js images/myphoto.jpg NETWORK: http://google.com/xxx NotOffline.jsp * FALLBACK: online.js locale.js CACHE: newhello.html newhello.js
在manifest文件中,第一行必须是“CACHE MANIFEST”文字,以把本文件的作用告知给浏览器,即对本地缓存中的资源文件进行具体设置。同时,真正运行或测试离线Web应用程序的时候,需要对服务器进行配置,让服务器支持text/cache-manifest这个MIME类型(在HTML5中规定manifest文件的MIME类型为text/cache-manifest) 。
在manifest文件中,可以加上注释来进行一些必要的说明或解释,注释行以“#”开始;文件中可以(而且最好)加上版本号,以表示该manifest文件的版本,版本号可以是任何形式的,更新文件时一般也会对该版本号进行更新。
指定资源文件,文件路径可以是相对路径,也可以是绝对路径。指定时每个资源文件为一行。在指定资源文件的时候,可以把资源文件分为三类,分别是“CACHE”、“NETWORK”和“FALLBACK”。
- 在CACHE类别中指定需要被缓存在本地的资源文件。为某个页面指定需要本地缓存的资源文件时,不需要把这个页面本身指定在CACHE类型中,因为如果一个页面具有manifest文件,浏览器会自动对这个页面进行本地缓存。
- NETWORK类别为显式指定不进行本地缓存的资源文件,这些资源文件只有当客户端与服务器端建立连接的时候才能访问。该示例中的“*”为通配符,表示没有在本manifest文件中指定的资源文件都不进行本地缓存。
- FALLBACK类别中指定两个资源文件,每一个资源文件为能够在线访问时使用的资源文件,第二个资源文件为不能在线访问时使用的备用资源文件。
每个类别都是可选的。但是如果文件开头没有指定类别而直接书写资源文件的时候,浏览器把这些资源文件视为CACHE类别,直到看见文件中第一个被书写出来的类别为止,并且允许在同一个manifest文件中重复书写同一类别。
为了让浏览器能够正常阅读该文本文件,需要在Web应用程序页面上的html元素的manifest属性中指定manifest文件的URL地址。指定方法如下:
<!-- 可以为每个页面单独指定一个manifest文件 --> <html manifest="hello.manifest"> </html> <!-- 也可以为整个Web应用程序指定一个总的manifest文件 --> <html manifest="global.manifest"> </html>
通过这些步骤,将资源文件保存到本地缓存区的基本操作就完成了。当要对本地缓存区的内容进行修改时,只要修改manifest文件就可以了。文件被修改后,浏览器可以自动检查manifest文件,并自动更新本地缓存区中的内容。
浏览器与服务器的交互过程
首次访问网站时的交互过程如下:
- 浏览器请求访问网站;
- 服务器返回请求网页,例如:index.html;
- 浏览器解析网页,请求页面上所有资源文件,包括HTML文件、图像文件、CSS文件、JS文件以及manifest文件;
- 服务器返回所有资源文件;
- 浏览器处理manifest文件,请求manifest中所有要求本地缓存的文件,包括index.html页面本身,即使刚才已经请求过这些文件。如果你要求本地缓存所有文件,这将是一个比较大的重复的请求过程;
- 服务器返回所有要求本地缓存的文件;
- 浏览器对本地缓存进行更新,存入包括页面本身在内的所有要求本地缓存的资源文件,并且触发一个事件,通知本地缓存被更新。
现在浏览器已经把本地缓存更新完毕,如果再次打开浏览器访问该网站,而且manifest文件没有被修改过,它们的交互过程如下:
- 浏览器再次请求访问网站;
- 浏览器发现这个页面被本地缓存,于是使用本地缓存中index.html页面;
- 浏览器解析index.html页面,使用所有本地缓存中的资源文件;
- 浏览器向服务器请求manifest文件;
- 服务器返回一个304代码,通知浏览器manifest没有发生变化。
只要页面上的资源文件被本地缓存过,下次浏览器打开这个页面时,总是先使用本地缓存中的资源,然后请求manifest文件。
如果再次打开浏览器时,manifest文件已经被更新过了,那么浏览器与服务器之间的交互过程如下:
- 浏览器再次请求访问网站;
- 浏览器发现这个页面被本地缓存,于是使用本地缓存中的index.html页面;
- 浏览器解析index.html页面,使用所有本地缓存中的资源文件;
- 浏览器向服务器请求manifest文件;
- 服务器返回更新过年manifest文件;
- 浏览器处理manifest文件,发现该文件已被更新,于是请求所有要求进行本地缓存的资源文件,包括index.html页面本身;
- 服务器返回要求进行本地缓存的资源文件;
- 浏览器对本地缓存进行更新,丰入所有新的资源文件。并且触发一个事件,通知本地缓存被更新。
需要注意的是,即使资源文件被修改过了,在上面的第三步中已经装入的资源文件是不会发生变化的,例如图片不会突然变成新的图片,脚本文件也不会突然使用新的脚本文件,也就是说,这时更新过后的本地缓存中的内容还不能被使用,只有重新打开这个页面的时候才会使用更新过后的资源文件。另外,如果不想修改manifest文件中对于资源文件的设置,但是对服务器上请求缓存的资源文件进行了修改,那么可以通过修改版本号的方式来让浏览器认为manifest文件已经被更新过了,以便重新下载修改过的资源文件。
发表评论
-
使用选择器在页面中插入内容
2011-11-08 10:09 0使用选择器来插入文字 使用选择器来插入内容 在CSS2中, ... -
HTML5 绘制图形【4】
2011-11-08 08:39 1705绘制变形图形 坐标变换 绘制图形的时候,我们可能会想要旋转 ... -
CSS3 选择器【2】
2011-11-07 14:30 1103UI元素状态伪类选择器 UI元素状态伪类选择器的共同特征是: ... -
HTML5 绘制图形【3】
2011-11-05 19:28 1321绘制渐变图形 渐变是指在填充时从一种颜色慢慢过渡到另外一种颜 ... -
CSS3 选择器【1】
2011-11-06 12:19 1719选择器概述 选择器是CS ... -
HTML5 绘制图形【2】
2011-11-04 11:42 1431使用路径 绘制圆形 要 ... -
HTML5 绘制图形【1】
2011-11-03 12:48 1515canvas元素基础 canvas元素是HTML5中新增的一 ... -
CSS3 模块化结构
2011-11-03 19:12 1505CSS3中的模块 模块名称 功能描述 Basi ... -
HTML5 获取地理位置信息
2011-11-01 18:12 5437Geolocation API的基本知识 在HTML5中,为 ... -
HTML5 使用Web Worker处理线程
2011-11-01 09:16 4661基础知识 Web Worker是在HTML5中新增的,用来在 ... -
HTML5 Web Sockets通信
2011-10-29 20:15 4135基础介绍 Web Sockets是HTML5提供的在Web应 ... -
HTML5 跨文档消息传输
2011-10-29 19:11 2015基本介绍 HTML5提供了在网页文档之间互相接收与发送信息的 ... -
HTML5 离线应用程序【2】
2011-10-27 20:48 1862applicationCache对象 application ... -
HTML5 本地数据库
2011-10-24 21:03 2596本地数据库的基本概念 ... -
HTML5 Web Storage
2011-10-24 15:51 1610Web Storage简单使用 在HTML5中重新提供了一种 ... -
HTML5 多媒体播放【3】
2011-10-23 10:45 1242video元素和audio元素的方法 play()方法:使 ... -
HTML5 多媒体播放【2】
2011-10-22 21:14 1746音频和视频元素的属性 这两种元素所具有的属性大致相同,介绍如 ... -
HTML5 多媒体播放【1】
2011-10-21 18:58 944video与audio元素基础 在HTML5中,video元 ... -
HTML5 拖放API
2011-10-17 19:43 4955在HTML5中,已经支持在浏览器与其他应用程序之间的数据互相拖 ... -
HTML5 文件API
2011-10-16 18:49 5022在HTML5中,提供了一个关于文件操作的文件API,通过使用这 ...
相关推荐
HTML5离线应用是现代网页开发中的一个重要特性,它允许用户在没有网络连接时仍然能够访问和使用某些网站或应用程序。这一功能通过HTML5的离线存储标准实现,包括Application Cache(应用程序缓存)和Service Worker...
HTML5离线应用程序的核心在于利用`离线存储`这一特性,使得Web应用即使在无网络连接的情况下也能继续运行。这主要依赖于HTML5的`Application Cache`(应用程序缓存),也就是我们常说的manifest文件。 `Application...
在IT领域,尤其是在Web开发中,离线应用的构建与部署是提高用户体验和应用程序可用性的重要手段。Apache2作为最流行的Web服务器之一,是许多开发者首选的平台来部署和配置离线应用。本文将深入探讨如何在Apache2环境...
HTML5 离线应用开发是一项关键特性,它允许用户在无网络连接的情况下仍然可以访问和使用部分Web应用程序。这一功能主要依赖于HTML5的离线缓存机制,通过一个称为`cache manifest`的文件来指定需要缓存的资源。当用户...
HTML5离线应用是现代Web开发中的一个重要特性,它允许应用程序在没有网络连接时也能运行。这一特性通过HTML5的离线存储标准实现,主要包括Application Cache(应用缓存)和Service Worker。这篇博客可能深入探讨了这...
HTML5 离线阅读功能使得网络应用程序即使在网络断开的情况下也能正常运行,极大地提升了用户体验。这一特性通过离线缓存技术实现,允许用户在有网络连接时预先下载必要的资源,以便在离线状态下使用。 离线网络应用...
HTML5离线数据库,也被称为Web Storage,是HTML5的一项重要特性,旨在改善网页应用程序的离线存储能力,使得用户在没有网络连接时也能访问部分数据。这一特性由两个主要部分组成:`localStorage` 和 `sessionStorage...
HTML5离线存储是Web应用程序实现离线工作的关键技术,它允许网页在用户离线时仍然可以访问和使用部分数据,极大地提升了用户体验。本课程代码主要围绕这个主题展开,旨在帮助开发者掌握HTML5离线存储的基本原理和...
### 使用HTML5开发离线应用的关键技术解析 在信息技术领域,HTML5的出现标志着网络应用的一个重大飞跃,尤其是在离线应用的开发上。HTML5,作为第五代超文本标记语言的标准,不仅增强了网页的表现力,更引入了一...
HTML5离线处理是Web应用程序的一个重要特性,它允许网页在没有互联网连接的情况下也能正常运行,从而提升用户体验。这一功能主要依赖于HTML5的离线存储标准,包括App Cache(应用程序缓存)和Service Worker(服务...
HTML5离线缓存,也称为App Cache,是HTML5引入的一种增强网页应用程序离线运行能力的技术。它允许开发者将一部分网页资源(如HTML、CSS、JavaScript、图片等)存储在本地,使得用户在离线状态下依然能访问这些页面,...
但瘦客户端应用程序也存在一些缺点:1.由于采用了HTML页面形式的用户界面,客户端的数据处理能力较C/S应用程序有所下降,用户体验也相对糟糕,无法像C/S那样使用丰富的效果来展示数据。2.浏览器必须总是具有网络
HTML5离线存储是现代网页应用中的一个重要特性,它使得应用程序在无网络连接或网络状况不佳时仍能正常运行。这个技术主要分为两种形式:Application Cache(应用缓存)和IndexedDB。 首先,我们来看看Application ...
AppCache定义了一个离线应用的缓存清单,使得在离线状态下可以访问指定的网页;而Service Worker则更加灵活,可以在后台运行,拦截网络请求,实现更精细的缓存控制和数据同步。 在"OfflineX5Demo"中,可能包含了...
"Remember"是一款高级的离线Todo应用程序,专为那些需要高效管理任务但又不希望受网络连接限制的用户设计。这款应用充分利用了现代Web技术,尤其是JavaScript开发的优势,使其即使在无互联网连接的情况下也能正常...
离线存储功能如离线应用缓存(App Cache)和Service Worker,使得网页可以在离线状态下依然能够运行部分功能,这对于移动设备上的应用尤其重要。 多媒体支持是HTML5的一大亮点。和元素的引入,使得网页可以直接嵌入...
HTML5离线数据库,也被称为Web Storage,是HTML5的一项重要特性,主要为Web应用程序提供了在本地存储数据的能力,使得应用程序即使在网络不畅或者离线状态下也能正常运行。这一特性由两个部分组成:localStorage和...
HTML5 离线存储技术是现代Web开发中的一个重要特性,它使得网页和应用程序即使在网络不稳定或者无网络连接的情况下也能正常运行。这项技术的核心在于利用HTML5的`Application Cache`(应用缓存)或者称为`Cache ...
本篇文章将深入探讨如何在Vue应用程序中处理在线和离线状态,以及如何使用特定插件来实现这一目标。 首先,我们需要理解`navigator.onLine`属性,这是JavaScript内置的一个API,用于检测用户设备当前是否连接到...