- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
Web应用中缩短Web响应时间的技术研究
1 引 言
性能是Web应用程序成功与否的关键因素,响应时间则是性能的一个重要指标,尤其是从用户的角度来看,随着同时访问的用户数的增加,Web应用程序的响应时间也会相应增加,当其增加到用户无法接受的程度时,用户便会失去耐心而离开该网站。根据Zona Research的研究指出,如果使用者等待下载网页的时间超过8 s,将有30%的用户选择停止浏览网页,同样的研究表明,如果下载网页的时间缩短1 s,则这个数字将从30%降低到8%。由此可见终端用户所感到的时间延迟(user-perceivedlatency)已经成为今天Internet的主要性能问题。
在网络带宽并没有得到相对扩充、网络流量绝对增加的情况下,是否能找到一些有效的办法,缩短整个网络对用户click的响应时间。本文针对这一问题,从Web应用程序开发的角度出发,通过提高Web应用程序的性能,从而加速网络对用户的反应速度,缩短用户感知的时间延迟。
2 Web数据响应时间
从终端用户的观点看,从浏览器对网站发出一个HTTP GET的请求,一直到网站服务器完整地传回网页内容至浏览器的这段过程可以描述为图1所示的时序图。
客户端和Web服务器之间HTTP信息的传送是通过TCP连接实现的。图1描述Web请求中的所有时间延迟。客户端向服务器发送文件请求,首先建立TCP连接(1~3),连接建立后,Web服务器响应且发送文件至客户端,客户端接受文件且在屏幕上显示出来(4~5)。如果文件中包含图片或者需要在屏幕上显示的处理数据,客户端浏览器就需要发送请求去检索获取这些数据(6~n)。整个Web页面在屏幕上显示,其中可能含有连接,如果用户点击连接,浏览器就需要使用同样的过程检索新的页面。
根据图1和以上分析,定义如下的概念:
定义1 用户感知时间Tuser用户从浏览器对网站发出一个HTTP GET的请求,直到服务器完整地回传网页内容至浏览器的这段时间。
定义2 Web数据响应时间TWeb设Tpage为页面下载时间,Tcontent为内容生成时间,则整个页面的响应时间,则:
如前面所述,在网络带宽并没有扩充的情况下,则式(1)中的Tc这段时间就是固定的,那么提高网络性能的关键就是如何缩短Th+Ti,也就是定义2中的Web数据响应时间TWeb。在本文中,从开发Web应用程序的角度出发,从数据访问、减少网络通信量以及缓存3个方面讨论缩短Web数据响应时间的方法,并对这些方法的使用效果作了测试比较。
3 减少数据显示的响应时间
目前的Web应用开发大多采用基于B/S模式的3层架构,如图2所示。
分层分离了逻辑,使得系统结构层次明晰,系统变得灵活和易于维护。图2很好地说明了Web中的分层架构,同时也描述Web页面提取数据显示的过程,以下从软件处理数据的角度分别讨论如何缩短数据访问及Web数据显示延迟,从而缩短Web数据的响应时间,减少用户感知时间,提高用户的满意度。
3.1 数据访问的优化
对数据的访问速度很大程度上影响应用系统的性能,如果被请求的页面是一个静态页面或只有一小部分内容需要从数据库中提取,则它的加载速度比那些需要从数据库中大量读取数据或不断从数据库接收和更新数据的页面要快,因此,对于动态的页面来说,对SQL层数据处理的优化就显得非常重要。在Web开发中,除了传统的改善数据库结构和优化SQL语句外,主要从以下的几个方进行优化。
3.1.1 使用XML技术
对于普通数据访问数据库而言,在数据量不大的情况下,一般性查询在执行速度上,不会有什么问题。每次数据提取需要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调用中重复使用。
作者:张晓丽 于海燕 来源:中电网
上一篇:研诺逻辑AAT1130电源管理方案
下一篇:解开视频监控的存储秘密