百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

基于HTML5的Application Cache技术研究

zhezhongyun 2025-02-15 01:57 14 浏览

摘 要:HTML5新增了很多标签和功能,部分功能得到了深入的研究和应用,但是关于应用缓存的研究介绍并不多。Web应用逐渐兴起,提高Web应用的用户体验是当前研究的要点。详细介绍了应用缓存的建立以及在线更新。对应用缓存提高应用载入速度的效应进行了验证测试,实验表明,应用缓存对不同文件都能较大程度地提高应用载入速度,文件越大提高的效果越明显。

0 引言

HTML5是第五版HTML语言,同时也用来描述新一代的Web技术规范集合,包括HTML5、CSS3、svg、JavaScript[1]。随着智能手机的普及、通信技术的快速发展和云计算技术的成熟,已进入移动互联时代。基于B/S结构的Web轻应用由于其便捷性,逐渐在应用领域占了一席之地,并成快速发展态势。HTML5正是为了满足新形势下的Web需求而更新的技术规范。

然而随着多媒体技术的发展,相较于C/S结构,B/S结构的应用的缺点逐渐凸显,Web应用尤其是页游的快速发展,应用对网速的要求越来越高,服务器相应速度受限,较大地影响着用户体验效果。同时为了提高浏览效果,很多Web应用采取了高质量的图片、视频、音乐,设计了绚丽的动画效果。这些文件的重复加载严重影响了网页打开的速度,浪费不必要的流量,增加了网络负担。Web应用的数据本地存储是优化Web性能的重要手段,成为当今Web领域的研究热点之一[2-3]。

HTML5的规范在2014年正式公布之后,学者和开发人员进行了积极的研究。黄雄等人[4]对新增的

1应用缓存技术介绍

HTML5允许用户将Web应用保存到本地磁盘上,就是把应用程序所需的所有文件包括HTML、CSS、JavaScript下载到本地硬盘。这些缓存不会随着用户清除浏览器缓存而被清除,缓存起来的应用程序文件会在联网状态之下进行更新。从实际应用效果看,Web应用实现了像C/S结构应用的本地安装。

使用DOM Storage或Web SQL Database保存数据从而实现“本地安装”的Web应用在离线状态下依然可以访问运行,同时具备一套同步机制,再次回到在线状态时,能够将存储的数据发送到服务器。

Web应用缓存有3个优点:(1)支持离线访问;(2)提高应用载入速度;(3)降低服务器压力[9]。

2 存储技术的实现

2.1 缓存的建立

并不是Web应用程序的所有清单都要进行存储。在将应用缓存到本地前,首先要建立一个缓存清单,清单包含了所有要缓存文件的URL,然后在应用程序主html文件的标签内设置manifest属性[10],格式如下:

..........

..........

一般来说,一个Web应用的正常运行需要多个文件的支持,那么本地存储的每个html文件就都需要设置属性来指向清单文件,这些文件指向同一个清单文件,这样不仅可以清楚地表达它们是需要缓存起来的,而且是来自同一个Web应用。服务器需要进行配置才能识别清单文件的文件类型,常见的服务器配置方法如表1所示。

通常来说,复杂的Web应用无法将依赖的所有资源都缓存起来,通常需要一个复杂的清单。在复杂的清单文件中,用特殊的区域头标识该头之后清单项的区域。区域头有3种,分别是CACHE、NETWORK和FALLBACK,其中CACHE头区域标识的是需要存储的文件;NETWORK区域头标识了该区域的URL中的资源从不缓存,总要通过网络获取,通常存放服务端的脚本资源,如果是*,表示CACHE区域之外的文件都需要从网络下载;FALLBACK区域头中的清单每行都包含两个URL,第一个URL是一个前缀,标识凡是和该前缀匹配的URL都不会存储起来,需要的话,会从网络下载,第二个URL是指需要加载和存储在缓存中的资源。清单格式具体如表2所示。

2.2 缓存的更新

缓存的更新是浏览器检查清单文件是否有更新而不是去检查缓存的文件本身是否有更新。如果开发者修改了某个文件,比如JavaScript文件,要想使改变生效,就必须去更新清单文件,最简单便捷的方式是改变注释里的版本号或修改日期。当用户主动删除应用缓存后,页面会被重新加载再次缓存。缓存更新缓存清单中的所有文件,当其中的一个文件不能正常缓存更新时,缓存失败,使用原来的本地缓存。

浏览器检查清单文件和更新缓存的操作是异步的,缓存可以在载入应用之前进行,也可以和载入应用同时进行。因此,在更新清单文件之后,用户必须载入应用两次才能保证最新的版本生效。

缓存的更新的相关操作是通过检测applicationCache.status属性的值并调用applicationCache的事件程序进行的,不同的值代表缓存不同的状态,通过事件侦听结合当前状态采取相关动作,具体如表3所示。

2.3 在线状态更新

Web2.0概念兴起以来,用户和服务器的交互逐渐成为互联网的主流。用户不仅要从服务器请求数据,还需要更新数据到服务器。Web离线应用使用HTML5新引入的DOM Storage机制在本地存储key/value键值对数据。这种机制保存数据规模大,安全度高。

DOM Storage分为两类:sessionStorage和localStorage。其中sessionStorage用于存储与当前浏览器窗口关联的数据,窗口关闭后,sessionStorage中存储的数据将无法使用;localStorage用于长期存储数据,窗口关闭后,localStorage中的数据仍然可以被访问。Web应用离线数据存储使用的是localStorage[11]。

在离线状态下,Web应用将数据以key/value键值对形式保存在本地,当应用处于在线状态时,Web应用将数据更新到服务器上。HTML5提供了setItem(key,value)、getItem(key)、removeItem(key)等方法对数据进行更、查、删操作。通过navigator.onLine属性,可以检测浏览器是否在线,当window.navigator.onLine为ture时,表示在线,为false时,表示离线。同时,在window对象上注册在线和离线事件的处理程序,可以检测网络连接状态的改变。

3 实验测试

实验基于Opera 30浏览器,Apache 2.2,MySQL 5.2,Windows 8.1操作系统。测试内容主要是不同文件类型在有本地缓存和无本地缓存情况下的载入时间,结果如表4所示。

通过对表4结果分析,利用缓存机制后,可快速进入缓存,大幅度提高了应用缓存时间。而且网页使用了高清晰的图片,本地缓存后能快速载入应用。

4 结论

HTML5是新一代的网页开发标准,新增加的功能将极大地提升开发效能和效率,有力推动Web应用的发展。在移动互联时代,应用本地缓存技术将明显地提升用户体验。HTML5新技术的逐渐推广,将促进Web应用突破网络限制,使设计师更专注于应用本身的开发。而且随着WebGL技术的使用,结合本地缓存技术,在享受酷炫效果时,不会影响载入速度。下一步将进行WebGL与本地缓存技术相结合的相关研究。

参考文献

[1] CRAVENS J, BURTOFT J. HTML5敏捷实践[M].豆葆坤,译.北京:电子工业出版社,2014.

[2] ANTHES G. HTML5 leads a Web revolution[J]. Communications of the ACM, 2012:16-17

[3] PREUVENEERS D, BERBERS Y, JOOSEN W. The future of mobile e-health application development: exploring HTML5 for context-aware diabetes monitoring[C]. Procedia Computer Science, 2013,21:343-351.

[4] 黄雄.基于HTML5的视频传输技术研究[J].广东技术师范学院学报,2014(11):20-25.

[5] 冯科融,王和兴,连加美,等.基于HTML5的3D多人网页游戏实现方案[J].微型机与应用,2013,32(1):4-6.

[6] 孙松柏,ABBASI A,诸葛建伟,等.HTML5安全研究[J].计算机应用与软件,2013,30(3):1-6,16.

[7] 李烨民.基于HTML5的前端本地化存储技术[J].成都大学学报(自然科学版),2012,31(1):67-69.

[8] 石坚,李治洪.基于B/S结构的地图切片前端预存储技术[J].微型机与应用,2014,33(19):5-7,11.

[9] MDN. Using the application cache[DB/OL].[2015-04-12](2015-08-22).https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache.

[10] FLANAGAN D. JavaScript权威指南(第6版)[M].淘宝前端团队,译.北京:机械工业出版社,2012.

[11] 郭宗宝.使用 HTML5开发离线应用[DB/OL].[2010-11-04]. http:
//www.ibm.com/developerworks/cn/Web/1011_guozb _html5off/.

相关推荐

字体缩放(方式一)(字体缩放150%怎么做)

通过元素宽度和字数计算得到缩放简单实现如下:/***字体最大为视觉要求大小(maxFontSize);超出缩小字体显示,最小为minFontSize;最小字体时超出部分使用圆点(...);*p...

网页世界隐藏的神秘代码语言,竟能这样改变布局

CSS基础:选择器与属性CSS(CascadingStyleSheets)是用于控制网页外观的一门样式表语言。它通过定义HTML元素的显示方式来增强网页的表现力。CSS的选择器允许开发者精确地定位...

CSS属性值计算过程详解(css属性用来定义元素计算)

在CSS中,即使某些属性没有显式声明,浏览器也会通过**属性值计算过程**为每个元素的所有属性赋予最终值。这一过程分为四个关键步骤,以下将逐一解析。1.确定声明值浏览器首先检查所有**直接应用**到...

软网推荐:找回调整Windows 10字号功能

之前的系统,从WindowsXP到早期版本的Windows10,均有字体大小调整功能,但从创意者版Windows10以来,取消了之前的设置选项,取而代之的是自定义缩放比例设置。使用这个功能调整过...

Excel中如何设置文本框属性,实例代码讲解

Excel不仅可以对数据进行处理,而且也可以图形化数据,直观显示数据表达的内容。本节介绍一个很重要的对象,Characters,字符对象,使用Characters对象可修改包含在全文本字符串中的任...

CSS 字体样式(css中字体)

本节我们来讲字体样式,之前我们学习HTML的时候学过一些用于字体加粗、倾斜的标签,但是使用标签来实现的效果肯定没有我们通过CSS中的样式来的方便。接下来我们会给大家介绍下面这几个属性的使用:通...

PC网站建设必备代码知识:HTML基础与应用技巧

在PC网站建设的相关课程里,代码扮演着至关重要的角色。只有熟练运用正确的代码,我们才能打造出功能完善、用户体验出色的PC网站。接下来,我会详细讲解在PC网站建设环节中必须了解的代码知识。HTML基础代...

让你大跌眼镜的疯狂 HTML 和 CSS 技巧

今天,分享一个让你大开眼界的技巧。通过使用这个技巧,你可以将整个网页变成一个CSS编辑器。没错,你从未见过这种方法。当我第一次尝试时,我完全被震惊到了。现在,让我们开始吧!步骤1首先,创建一个基础的...

jQuery EasyUI使用教程:创建一个链接按钮

jQueryEasyUI最新版下载>本教程主要为大家展示如何使用jQueryEasyUI创建一个链接按钮。通常情况下,使用“button/”元素来创建一个按钮;使用“a/”元素来创建链接按钮...

React 19 有哪些新特性?(react100)

如果你对React18还不熟悉,欢迎阅读之前的文章《React18全览[1]》最近React发布了V19RC版本,按照惯例,我们对React19的新特性进行一次深度的体验学习...

Java注解探秘:为什么@PostConstruct能解决你的初始化难题?

你是否在Spring项目中遇到过这样的困扰:明明依赖注入已经完成,但某些配置就是无法正常加载?手动调用初始化方法又容易引发空指针异常?这就是@PostConstruct注解大显身手的时候了!@Post...

AI驱动的表单自动填写(ai置入表格)

我们都同意,填写表格是一项枯燥且耗时的任务。如果我们可以创建一个可以为我们填写表格的AI助手,让我们将时间投入到更有建设性的任务中,那会怎样?AI助手将能够通过调用以表单字段为参数的函数来填写表...

从零到一:小程序设计新手如何快速上手?

开发环境搭建对于小程序设计新手而言,搭建合适的开发环境是首要任务。以小程序为例,其官方提供了功能强大的开发工具——开发者工具。首先,新手需前往官方开发者平台,在页面中找到“工具下载”板块,根据...

JavaSwingGUI从小白到大神-6(续)(java从小白到大牛怎么样)

接上一篇《JavaSwingGUI从小白到大神-6》,因本篇文章3万多字,头条一篇发不完,只能分开发。同事查询面板:CompanyFind.javapublicclassCompanyFind{...

C# winform界面假死(c#程序假死)

针对C#WinForm界面假死问题,以下是分步解决方案:1.使用异步编程(async/await)将耗时操作移至后台线程,保持UI线程响应。步骤:将事件处理函数标记为async。使用Task....