无忧论文网

搜索
当前位置:无忧论文网 > 期刊资讯 > 经济类 >
  • 经济类

Web应用中的客户端缓存技术研究

发布日期:2016-08-27责任编辑:lgg点击:

  • 刊名:
  • 杂志级别:-
  • CN刊号:
  • ISSN刊号:
  • 周期:
1 引言 
 
1.1  研究背景及意义 
互联网的蓬勃发展与信息技术的不断变革推动着信息化时代的来临,层出不穷的Web 应用逐渐渗透到了人们生活的方方面面,为人们提供便捷获取信息与服务的途径。从单向信息传递的 Web1.0 时代到“以人为本”、实现双向交互的 Web2.0 时代再到当下热议的“个性化、精准化和智能化”的 Web3.0 时代[1],Web 应用从最初满足用户获取简单信息需求的单一静态文档形式逐步朝着交互实时且更为复杂、功能强大且不断扩展、页面更加丰富而多彩的方向前进。在整个 Web 应用发展的过程中,用户扮演着越来越重要的角色,功能丰富、交互友好、页面绚丽的 Web 应用以一种更为注重用户体验的方式满足并超越用户预期,提供更加人性化服务的同时也为用户带来了较为良好的用户体验[2]。 然而,Web 应用的发展也面临着许多挑战。一方面,Web 应用功能的不断扩展,客户端的丰富多样化,大量的脚本和样式文件使得 Web 应用变得庞大而复杂。而且,随着应用的普及,呈几何级数增长的用户访问量,频繁的查询和重复计算请求加重了服务器的负载。另一方面,在不稳定的网络环境和带宽的限制下,比如越来越普及的无线网络,用户数量增长带来的频繁而大量的请求会引起网络拥塞,页面响应迟缓甚至连接中断,用户等待时间延长,影响用户体验。 缓存技术是一种将用户频繁访问的数据存储在网络中的关键节点(包含客户端)的技术[3],它可以有效减轻 Web 服务器负载压力,降低网络拥堵,加快响应速度,是提升 Web 应用性能的途径之一。客户端缓存的主要思想是基于用户访问的时间局部性原理[4][5],将用户最近访问过的资源副本保存在客户端,当该资源被再次访问时,会检查本地缓存中是否命中,进而从客户端缓存中直接读取或从 Web 服务器端获取更新的版本同时更新本地缓存。开发 Web 应用时将客户端缓存纳入考虑,实现本地化存储,可以缓解服务器压力,节省带宽,并提升应用的流畅性。 
........
 
1.2  国内外研究现状
缓存是为了高效检索数据并提高数据利用率而开辟的一个用于保存数据的空间。应用缓存技术,将用户频繁访问的数据在 Web 的关键节点上保存一个副本,当用户再次访问该数据时,不需要连接至源服务器就可以通过读取缓存来获得数据的副本,这样就可以减轻服务器的处理压力、降低网络拥堵和提高响应效率[3][6]。现在众多Web 应用都采用了数据缓存技术,极大提高了数据检索效率。有国外研究学者将数据缓存大致划分为三类[7]:客户端数据缓存、集中式数据缓存和分布式数据缓存。客户端数据缓存是 Internet 中接收数据的一方即客户端建立一个数据缓存区,对 HTTP 请求返回的数据进行缓存。根据数据缓存的位置将集中式数据缓存分为服务器端数据缓存与网关代理级数据缓存。前者主要是在服务器上设置缓存区域,后者主要是在网关和代理服务器上设置缓存区域。分布式数据缓存是通过不同的数据分割方法将数据在网络中的多台服务器上进行缓存。这三类数据缓存技术中,客户端数据缓存技术具有在位置上更接近用户、产生较少网络传输和响应快速的优势。目前客户端缓存的实现依赖于浏览器厂商根据最新的 W3C 标准设计和开发的各个浏览器。 当前应用较为成熟和广泛的客户端缓存机制主要包括:基于浏览器实现的缓存机制和基于第三方插件实现的缓存机制。其中,前者具有代表性的有:IE 浏览器的user Data[8]、Safari 浏览器的 open Database 及 Fire Fox 浏览器的 Global Storage,利用这些机制完成客户端数据缓存均不依赖于 Cookie,其操作简单,便于开发,拥有较大的存储容量。另外,数据不会随着 http 请求头一同在网络上来回传输,保证一定的数据安全且减少带宽浪费。然而,以上机制在浏览器中的实现各不相同,存在兼容性问题。基于第三方插件的缓存机制有 Google Gears[9][10]与 Adobe Flash Shared Object[11]。利用插件技术将 Web 数据缓存至客户端是存在隐患的,选择放弃安装插件的用户则不能正常使用 Web 应用。
...........
 
2 相关技术
 
2.1 Web 缓存技术 
缓存技术是一种在 Web 中的关键节点(含客户端)上存储频繁访问的数据的技术[27]。Web 缓存主要是为了临时存储 Web 应用中的资源如 HTML 页面,脚本与图片等,将资源尽可能就近保存后,用户可以很迅速地重复访问这些数据,这样可以提高数据利用率和检索效率[28]。它的基本思想是基于用户访问的时间局部性原理[4],将用户访问过的数据在网络的关键节点中保存一个副本,当该数据被再次访问时,不必请求 Web 服务器,只需读取缓存中的副本。 缓存技术的最初提出是为了解决 CPU 计算速度与内存读写速度不匹配的问题。由于 CPU 运算速度远高于内存的读写速度,CPU 的后续处理需要等待数据读写完成,这样就导致浪费掉较多时间。CPU 对数据的访问在一定时间内具有空间与时间上的重复性和局部性,如果在高速缓存中存放频繁读取的数据,当 CPU 读取该部分数据时会首先从 Cache 中查找,查找不到时再去从内存中读取,且需要从内存中读取的数据只占 10%左右。Web 缓存技术的基本原理也是类似的,用户访问的 Web 数据具有一定的重复性。在 Web 中的恰当结点上对用户请求的数据的中间或最终结果设计合理的缓存后,就可以缩短应用服务器请求计算时间,包括和服务器端各个系统(如数据库系统,其他异构信息系统)的交互时间,降低用户的等待时间,提高 Web 系统的并发量,同时也明显降低网络的负载[29][30]。国内学者对理想 Web 缓存系统的特性总结为:快捷性,鲁棒性,透明性,可扩展性,稳定性,负载均衡等特性[31]。 
...........
 
2.2  客户端缓存技术
基于浏览器自身发展的缓存机制中最突出的是 IE 浏览器的 user Data。user Data[31]是微软专门为 IE 浏览器在客户端开辟的一块缓存区来存储一些 Web 应用数据,在IE5.0 中正式引入,它是通过对 CSS 行为进行特殊扩展来实现的,这些扩展是 90 年代后期浏览器大战中遗留的产物,是非标准化的。user Data 作为 IE 的一个内置组件,它的使用不依赖于用户对浏览器的设置,允许浏览器利用一些脚本语言如 Java Script,VBScript 将 XML 格式的数据存放客户端浏览器开辟的缓存空间中,并可以使得浏览器在不同会话间访问。 与 Cookie 对比,user Data 在客户端存储容量上有了显著的提高,user Data 将数据保存在一个 user Data 存储区中(User Data Store),IE 中不仅对每页数据的大小做了限制,而且对整个域的大小进行了限制,具体存储大小视安全域而定,参见表 2.1 所示。 user Data 对象可以为不同会话中的每个对象分配一个存储区域,并使用 save 方法与 load 方法将数据保存到相应存储区域。user Data 在使用时需要绑定在一个 HTML标签上并设置 behavior,但不是所有的 HTML 标签都可以与它绑定,比如<HTML>,<HEAD>,<TITLE>与<STYLE>,应用在这些标签上将会在调用 save 方法与 load 方法时发生错误。在没有手动删除和过期时间到期前,user Data 会在用户机器中一直保存,出于数据安全性的考虑,一个 user Data 存储区只可以保存同一目录下使用同一种协议的数据。此外,user Data 存储数据时并没有对其做加密处理,重要、敏感数据不宜保存其中。 
...........
 
3 Web 应用客户端缓存方案研究 ...... 17 
3.1 HTML5 客户端存储机制研究 ...... 17 
3.1.1 Web Storage .......... 17 
3.1.2 Indexed Database .......... 18 
3.1.3 Application Cache ........ 21 
3.1.4  存储机制对比与应用场景分析 ......... 22 
3.2 Web 应用客户端数据缓存准则 .... 23 
3.3  基于 HTML5 的 Web 应用客户端缓存方案 ....... 24
3.4   本章小结 ..... 33 
4 面向客户端缓存的 Web 应用框架 ......... 34 
4.1 Web 应用结构框架设计 ........ 34 
4.2  详细设计与实现 ........... 36 
4.3  本章小结 ....... 45 
5 应用与效果评估 ...... 46 
5.1  案例应用简介与实现 ........... 46 
5.2  客户端缓存方案核心函数 ........... 47 
5.3  测试环境 ....... 48 
5.4  测试内容 ....... 48 
5.4.1  页面模板 ..... 48 
5.4.2  功能测试 ..... 48 
5.5  效果评估 ....... 51 
5.6  本章小结 ....... 52 
 
5 应用与效果评估 
 
主要对第 4 章中基于客户端缓存的 Web 应用新方案进行具体的案例设计和效果评估。主要介绍案例应用和实现过程,之后进行测试与效果评估,通过具体的应用实施和测试评估发现目前存在的优点与不足,并提出未来的解决方案。 
 
5.1  案例应用简介与实现 
本文中将客户端缓存新方案应用于一个简单的网上书城应用,主要来模拟和实现图书检索功能、查看图书详情和图书相关评论的功能,主要用于检验本缓存方案的有效性并进行测试。本案例的主要设计目标有:本小节主要结合案例介绍客户端缓存新方案的应用和其关键方法。 (1) open Next Page(url,qstr):完成页面跳转,将参数保存本地,方便下一个页面模板访问,并根据参数呈现不同的结果。参数 url 传入下一个页面模板的地址,参数 qstr传入上一个页面的查询参数,这里参数的保存采用的是 local Storage 存储方式,参数url 的值作为键,参数 qstr 的值为键对应的值。 (2) query(serv Name,mapping File):查询处理入口。负责读取在客户端缓存中读取该模板的查询参数,并完成查询处理。第一个参数 serv Name 为服务器端负责该处理的 servlet 的名称。第二个参数 mapping File 是该模板的映射信息文件地址。 (3) load XML(xml File):加载 xml 文件,将 xml 文件转化为 DOM 结构。读入映射信息文件,方便后续节点和属性值的读取。参数 xml File 指定映射信息文件路径。 (4) clear Table(xml Dom):清空动态数据内容和恢复表格原始结构。页面模板中只给出了表头信息,表格的行数和内容是由每次的查询参数和检索结果决定的,因此在进行下一次查询时需要将上次查询对页面进行的变动做恢复。具体对页面的哪些表格做恢复需由传入的映射文件 DOM 的相关节点指定。 
...........
 
总结 
 
互联网的快速普及和 Web 技术的不断革新催生了无数 Web 应用,渗透进人们生活、工作、学习与娱乐等方方面面,极大降低了人们获取信息和服务的成本。Web应用已不再是功能单一的内容提供者,而是逐渐演变为功能强大,业务逻辑复杂,计算庞大的应用服务系统。在体验至上理念盛行的当下,开发人员在设计和开发 Web应用时需要思考如何提升客户端性能。时间与空间局部性原理告诉我们用户在使用Web 应用过程中会频繁访问某些数据,这些数据如果每次都要通过发送请求至服务器,由服务器给出响应结果的话,会造成一定的带宽和服务器计算资源的浪费,在访问高峰时段,还会出现响应缓慢和用户等待时间较长的问题。客户端缓存是解决该类问题的有效办法,但已有的浏览器缓存和第三方插件缓存都存在一定的缺陷。一方面,PC的更新换代带来了客户端硬件性能的提升如:更大的硬盘空间和更快的处理器速度。另一方面,最新发展了HTML5标准,各个浏览器开始对该标准提供不同程度的支持。因此在这一发展背景下本文提出了一种客户端缓存新方案,主要工作有: 
(1)  研究了客户端缓存机制的历史与发展现状,对比和总结了不同缓存机制的优缺点和相适应的应用场景。 
(2)  提出了客户端数据缓存的通用准则,为 Web 应用开发者提供客户端缓存数据的一些参考。 
(3)  提出了基于 HTML5 标准的客户端缓存新方案,设计了客户端缓存层的处理逻辑和方案实现的核心 API。 
(4)  对集成页面模式做适当补充完善,实现了页面静态模板和页面动态数据分离,利用通用集成器将两者集成。 
(5)  最后,设计了案例应用,对本文的客户端缓存新方案进行了测试与验证。  
.........
参考文献(略)


上一篇:上一篇:国家审计在宏观经济管理中 的地位和作用研究

下一篇:下一篇:没有了

在线咨询
我要发表
发布转让需求
 

合作伙伴: