论文部分内容阅读
Internet的快速发展,基于Web的应用与人们的生活和工作越来越紧密联系在一起。很多传统的信息系统被移植到互联网上,微博、电子商务、社交网站等新型的应用模式也在层出不穷。由于Web具有互动性、便捷性、易用性等特点,受到许多企业和个人的喜欢。性能是一个Web应用程序成功的一个决定性要素。因此,Web应用程序的性能优化成为一个重要的研究问题。通常,当我们谈论一个Web应用程序的性能的时候,想到的都是优化后台服务器性能,前端性能优化往往被忽略。目前,Web应用程序的后端性能优化技术已经非常的成熟,比如负载均衡、反向代理缓存、分布式缓存、共享文件系统、数据库性能优化等等。但当基于Web 2.0技术Web应用兴起的时候,一个普遍的现象是,在现实的应用情况中,终端用户感知这个应用的响应十分缓慢,而在系统服务器方面,却查找不到任何一个资源瓶颈。Web2.0时代的到来,一个页面包含的内容越来越多、越来越丰富。获取一个页面,HTTP请求平均数超过90个,页面的平均大小超过1.5M,平均需要向15个域名发送请求[1]。因此,Web应用程序的前端性能优化不能再被忽视。首先,本文研究了浏览器响应时间的计算模型,还分析了HTTP协议。同时,分析及提出以用户感知时延作为性能衡量的指标,为后续的性能方案的验证作为衡量标准。接着,根据HTTP请求数、渲染速度、缓存机制等因素的分析,提出了减少HTTP请求、加快渲染速度、设置缓存等优化方案,并给出了具体的实施及验证,证实这些优化策略确实可以达到优化性能的目的。再者,本文着重研究了Web请求处理流程存在的问题。传统的Web请求处理方式存在用户体验不好且性能差,而目前广泛使用的AJAX技术,虽然提升了性能和用户体验,却增加了大量请求数,造成了服务器负担过重。因此,本文提出了Web请求流水线化的解决方案。请求流水线化就是要利用Browser和Web Server之间的并行性的特点:首先,将页面划分成多个可调用的Pagelets小块;其次,在Browser和Web服务器之间建立管道;最后,在不同的时期,操作它们的运行。通常,流水线化使用多线程的。在这里,提出了请求流水线化的单线程实现方式及Page Let的优先级。通过实验分析,证实了多线程流水线方式在性能方面确实比AJAX性能方面要好,且对服务器负担也相对较轻。但是,在面对大量并发请求时,它同样会造成性能的严重下降;而单线程的实现方式,相对而言性能影响较小,并且单线程的实现方式同样可以获取良好的用户体验。因此,提出了对Web请求流水线化的改进。即通过服务器增加一层调度,在正常情况下,调度多线程的实现模块;在服务器过载的情况下,调度单线程的实现模块。同时,通过了实验分析,这样确实可以获得良好的性能改善。