一、背景
性能是Web应用程序成功与否的关键因素,响应时间则是性能的一个重要指标,尤其是从用户的角度来看,随着同时访问的用户数的增加,Web应用程序的响应时间也会相应增加,当其增加到用户无法接受的程度时,用户便会失去耐心而离开该网站。根据Zona Research的研究指出,如果使用者等待下载网页的时间超过8 s,将有30%的用户选择停止浏览网页,同样的研究表明,如果下载网页的时间缩短1 s,则这个数字将从30%降低到8%。由此可见终端用户所感到的时间延迟(user-perceivedlatency)已经成为今天Internet的主要性能问题。
在网络带宽并没有得到相对扩充、网络流量绝对增加的情况下,找到一些有效的办法来缩短整个网络对用户请求的响应时间,就显得愈发重要。针对这一问题,我们从以下几个方面进行了调研与探索,从而加速网络对用户的反应速度,缩短用户感知的时间延迟。
二、缩短响应时间的方案
2.1 优化数据访问
对数据的访问速度很大程度上影响应用系统的性能,如果被请求的页面是一个静态页面或只有一小部分内容需要从数据库中提取,则它的加载速度比那些需要从数据库中大量读取数据或不断从数据库接收和更新数据的页面要快,因此,对于动态的页面来说,对SQL层数据处理的优化就显得非常重要。在Web开发中,除了传统的改善数据库结构和优化SQL语句外,主要从以下的几个方进行优化。
2.1.1 使用XML技术
采用XML(可扩展标记语言)技术,可将查询的结果生成XML文件保存在Web服务器上,使客户端能够直接和XML文件进行交互,以节省访问数据库的资源;同时也可以将XML传送到客户端,在客户端恢复为数据集,此后就可以直接在客户端进行一些操作,而不必和服务器交互,建立非连接的数据访问以节省时间。这里采用以下的算法过程利用XML技术实现对数据库的访问。
(1)建立数据库连接,生成查询结果数据集(DataSet);
(2)用XmlDataDocument将查询结果集(DataSet)以XML形式保存在Web服务器的指定目录下,同时断开数据库连接;
(3)一旦用户发送访问请求,首先查询Web服务器指定目录下是否有满足条件
的XML文件,如果存在转(4),否则转(1);
(4)创建XmlDataDocument对象,并用其Load方法加载该XML文件; (5)利用XPath或者XQuery查询技术,查询已加载的XML文件,生成相应的结果集。
从上面的过程可以看出,一旦有用户发送查询请求,首先将数据库服务器中的数据转化为XML文档,保存在Web服务器上,然后查询XML文件中的数据,获取查询结果。之后如果有新的请求查询相同的记录时,可以直接从Web服务器的XML文件中提取数据而不用再访问数据库。这对于用户频繁的查询汇总操作中,优势非常明显,且效率很高。这种思想在逻辑上将数据的生成和操作分开,同时节省了和数据库服务器建立连接的时间,将其转换为对服务器端XMl文件的读取,有效地减轻了对系统数据库服务器的负荷。
3.1.2 使用连接池
建立Web应用程序与数据库之间的TCP连接时,DBMS(数据库管理系统)需要为其分配多种资源,而在释放连接时,DBMS需要释放掉这些资源,分配和释放资源都是比较耗时的工作,因此反复建立和释放连接势必会影响整个系统的性能。实际上,大多数应用程序仅使用1个或几个不同的连接配置。这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。为了使打开的连接成本最低,ADO.NET使用连接池的优化方法。
连接池技术能够能重用到数据库的连接,而不是每次请求都建立新的TCP连接,新连接仅在连接池中得不到连接时才建立。当连接被关闭时,它被返回到连接池中,在那里它仍然保持与数据库的连接,与完全断开TCP连接相反。池进程保持物理连接的所有权。通过为每个给定的连接配置保留一组活动连接来管理连接。只要用户在连接上调用Open,池进程就会检查池中是否有可用的连接。如果某个池连接可用,会将该连接返回给调用者,而不是打开新连接。应用程序在该连接上调用Close时,池进程会将连接返回到活动连接池集中,而不是真正关闭连接。连接返回到池中之后,即可在下一个Open调用中重复使用。池连接可以大大提高应用程序的性能和可缩放性。默认情况下,ADO.NET中启用连接池。除非显式禁用,否则,连接在应用程序中打开和关闭时,池进程将对连接进行优化。
2.2减少网络通信量
数据传输量的大小是决定显示响应速度的必要前提,数据传输量是指在客户端Web浏览器和Web服务器之间传送的数据量。我们可以通过减少网络的通信量:减少IE浏览器和Web服务器层之间的数据传数量,缩短用户感知时间。
2.2.1 使用缓存技术
Internet的统计表明,超过80%的用户经常访问的是20%的网站的内容,在这个规律下,缓存服务器可以处理大部分客户的静态请求,而原始的服务器只需处理约20%左右的非缓存请求和动态请求,于是大大加快了客户请求的响应时间,并降低了原始服务器的负载。合理有效地设计和使用缓存是优化应用系统性能的重要手段,在基于Web的支持大量用户的系统开发中,这一点尤为明显。利用有效的缓存,可以避免Web服务器与数据库之间的网络往返,绕过占用很多资源的计算,并节省服务器资源,同时改善响应时间和等待时间。
缓存服务是一种提高服务器性能、降低服务器资源浪费的有效方法。对于安全性要求高的应用程序,采用在WEB服务器上维护缓存数据的方式可以有效地提高页面性能。缓存实现了最近最少使用(least-recently-used)替换算法,而且允许强制缓存清除操作——如果可用内存下降到低水平——则自动从缓存中删除不使用的项目。另外缓存支持依赖性到期特性,它能强制包括时间、键值、文件失效。多级缓存的体系结构如图3所示。
2.2.2 避免服务器和客户端的交互
HTTP是用于客户端和服务器之间进行信息传输的协议,它是一种请求响应类型的协议:客户机向服务器发送请求,服务器收到请求后进行处理,对这个请求作出回答。Web浏览器包含了许多的HTTP请求,每一个请求对应一个小型文件,HTTP对每一个HTTP请求需要建立1个独立的TCP连接。
因此,客户端的每次请求将会引起客户端和服务器间的一次通信,频繁的操作
势必对系统的响应时间造成严重的影响。为避免不必要的TCP连接建立,通常只需在向服务器查询或更新数据时才触发客户端与服务器之间的信息交互。能在客户端执行的数据操作应尽可能的用客户端脚本(如Javascript)实现。例如,对用户输入数据的校验,应该尽量在客户端进行校验,再将数据提交给服务器。
2.2.3客户端缓存
上面提到数据缓存在服务器端有很多好处,可以减少IE浏览器和Web服务器层之间的数据传数量,然而有的时候我们为了提高性能我们要把有些数据缓存到客户端,也可以减少网络通信量,从而用这种机制来达到缓解服务器压力。在客户端缓存网页或者其他网络资源(图片,脚本,样式表,等)的好处是显而易见的:避免了不必要的请求,从而增加访问速度;而且减少了响应的数据量,从而减少带宽。减少网络带宽不仅意味着访问速度的提高,在当网络带宽不是完全免费的情况下,也有着显而易见的好处。
在HTTP/1.1的RFC中,也提到通过适当使用缓存,HTTP协议中定义了三种类型的缓存机制:
Freshness: 允许客户端无需检查原始服务器上的内容就缓存当前响应,常用的是Expires和Cache-Control。
Validation: 允许在当前缓存的内容“过期”后检查原始内容是否已经更新,比如 Last-Modified 和 ETag。
Invalidation: 允许在访问同一个资源时使之前的缓存内容失效,比如对同一个资源的 POST,PUT 或者 DELETE 请求就会使之前的缓存失效。
例如Expires可以指定缓存的过期时间,指定内容的过期时间是最简单的实现客户端浏览器缓存的方法。Expires指定一个时间,告诉浏览器相应的内容在指定时间之前都不会发生变化。浏览器因此也就不需要重新请求文档内容,只需从缓存中读取相应内容就可以了。如果不希望浏览器缓存当前内容,可以把Expires设置为一个过去的时间。
再例如Last-Modified相应头指定一个时间,告诉浏览器当前文档最后修改时间。浏览器下次访问该文档时会包含一个 If-Modified-Since字段,目的是告诉服务器,只有请求文档的最后更新时间大于指定时间时,才需要服务器重新传送文档内容。 If-Modified-Since的值来自浏览器收到的Last-Modified值。
2.3 对象包装
大部分的网页都是由许多小的文件(小于16K)组成的,这是通过对象包装进行web文件传输的一个大前提。服务器端的大多数开销都来自于操作系统从本地磁
盘中检索被请求文件的开销,如果锁清秋的文件数减少了,则服务器端的开销就减少了,通过避免包的残片,从而在网络中要传输的包也减少了。所以我们提出通过对象包装来进行web文件的传输,对象包装是在一个主页上的web文件的集合,包装在一个未压缩的存档文件里。这样多个文件,例如HTML文本和图片文件等,就可以被包装在一个对象包装文件里,从而提高传输的效率。主页上的文件是按顺序地被包装的,并不经过压缩,这样可以避免在接收端解压的开销。对象包装可以通过独特的文件扩展名来标识,接收时,客户端解包装在对象包里的文件。
对象包装的格式
我们提出的新的传输机制-对象包装,可以减小web浏览的响应时间,不仅减小了传输路径上路由器处的开销,还减小了web服务器处的响应时间。对象包装旨在解决web文件传输中,两大不同的问题:文件获取开销和协议处理开销。实验表明经对象包装后的文件传输可减少34.7%的响应时间、40.1%的传输字节数、和7.1%的包。
2.4最小期望响应时间(MRT)分布式web缓存机制
Web缓存是提高web服务性能和质量的一个标准方案,然而单点缓存的效率很低,在web中的缓存命中率只有40%甚至更低。通过把单个的缓存节点扩展为协作的缓存集合,支持在多个缓存服务器间的数据共享,从而能提高web caching的有效性,提高缓存命中率,缩短响应时间。协作缓存系统有两类:分层的和分布式的。
分层的缓存服务器架构在缓存服务器中定义了父级和兄弟级的关系,如果一个缓存服务器不能响应某个HTTP请求,它先检查它的兄弟缓存服务器是否可以响应,如果它们也都无法响应,则此请求被传递给它的父缓存服务器,然后一层一层的往上传递。如果最终的根缓存服务器也没有所请求的页面,她就把请求转发给web 服务器。分布式的缓存服务器架构,与分层的架构相反,它允许所有的缓存服务器以
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库缩短响应时间方案 response time在线全文阅读。
相关推荐: