基于web服务器的网站性能优化研究

2018-02-18 18:14胜,朱
信息记录材料 2018年6期
关键词:线程浏览器客户端

戴 胜,朱 琳

(广东科技学院 计算机系 广东 东莞 523083)

1 引言

中国互联网络信息中心(CNNIC)2017年1月发布的《中国互联网络发展状况统计报告》中数据表明:截至2016年12月,我国网民规模达7.31亿,互联网普及率为53.2%[1]。随着上网人数的剧增,网站访问量也增加,当网站访问量增加时,要保证网站的处理效率,提升用户的访问体验,这是一个巨大的挑战。

现实中网站访问过程:用户在浏览器中输入网址,通过DNS域名解析得到目标服务器IP地址,然后向服务器发送HTTP请求,服务器对请求数据进行处理,处理完成将数据返回给客户端,客户端浏览器得到结果,最终以HTML或JSP等数据格式显示给用户。本文从网站访问的过程进行整体的分析,着重于客户端、服务器端的研究并从这两个角度对提升网站性能的技术进行分析和论述。

2 客户端优化

这里的客户端实际上指的是浏览器。在浏览器完成访问网站的时间中,有80%的时间用于加载图像、样式表、脚本等静态资源。浏览器的主要用于显示数据和发送HTTP请求,从这两个角度进行分析,研究提升网站性能的技术和方法。

2.1 减少HTTP请求

一个页面中包含多个种类和多个数量的组件,减少Http请求次数就是减少对这些组件的加载请求。减少HTTP请求次数常用以下方法:

(1)延迟加载和预加载

延迟加载指的是页面刚开始加载时只加载一部分,当用户继续往后进行浏览时,才会加载后面的资源,这样可能会减少请求数量或延迟请求数量,有利于提高用户体验。预加载指的是在网页全部加载之前,对一些重要内容提前进行加载,减少加载时等待的时间。延迟加载可以使用定时器、条件触发等方法来实现。

(2)Ajax请求优化

Ajax的优点是由于其从服务器传输信息的异步性而为用户带来反馈的及时性,但随着网页Ajax应用的增加,请求数量也不断增加,这样也会降低网站性能[2]。对Ajax进行优化,可以使用Ajax缓存。对Ajax请求进行缓存,将请求地址和返回结果保存在缓存中,当进行下一次Ajax请求时,直接从缓存中提取数据,从而减少系统的响应时间。

2.2 JSP静态化

JSP技术主要用于动态网页,但每次的结果没有保存,导致每次请求都需要进行编译等多次复杂的操作,这样使得系统开销巨大。在访问JSP网页时,服务器会先把JSP转换成Servlet对象,然后对Servlet进行处理,最终将结果以HTML文件格式返回给浏览器。JSP静态化实际上就是在Servlet处理之后到HTML页面响应之前这一过程中,设置一个拦截器,将Servlet生成的HTML文件进行保存,当下一次访问时,可以直接加载HTML文件,从而减少系统操作时间。

3 服务器端优化

当请求到达服务器后,服务器根据请求内容进行业务逻辑处理,或调用方法,或访问数据库,或连接外部网站,根据服务器业务处理中涉及到的两个重要部分web服务器访问和数据库访问,提出以下优化方案。

3.1 提高后台服务器性能

(1)负载均衡

负载均衡指的是对系统中的各个节点的负载进行监控调整,使每个节点的负载趋于均衡。具体是指在系统节点中部署硬件负载均衡设备或安装负载均衡软件,对各个节点进行监控,并建立一套映射机制,可以将请求分发到其他节点,从而使过载节点减少负担,实现负载均衡。常见的负载均衡技术包含:NDS轮询、IP负载均衡和CDN。

DNS轮询就是将同一个域名对应多个IP地址,一般采用轮询算法进行调度,但实际上由于调度策略的问题,DNS轮询很难实现真正的均衡;IP均衡负载是通过内核驱动更改IP的目的地址来完成数据负载均衡的,请求先到达负载均衡服务器,之后将IP进行映射,并把请求内容发送到新的IP地址对应的服务器上;CDN是利用各种缓存服务器部署到用户访问集中的网络中,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求[3]。负载均衡在用户访问量比较大的情况下使用,才能保证成本和服务器性能。

(2)多线程并发

多线程并发指的是使用多个线程其处理多个任务。一个请求会产生一个Servlet,一个Servlet需要一个线程来处理,使用多线程技术可以同时处理多个请求和任务,这样可以节省时间,提高访问性能。多线程并发常采用线程池技术。线程池会预先生成多个线程,当有任务到达就会从中取出一个线程进行处理,而之前的线程在完成任务后会回到线程池,准备下一次被调用。线程池技术能够减少创建线程带来的时间开销,有利于提升系统性能。

3.2 数据库优化

数据库的访问效率是网站性能的重要体现。在数据库访问优化中,要把握减少数据访问、返回更少数据、减少交互次数、减少系统开销等原则。

(1)建立适当的索引

对适当的字段建立索引,从而提升数据库访问效率。索引的种类有很多,组合索引、多重索引等等,通过这些索引的整合使用将大大提高数据库的访问效率。

(2)减少数据量

减少返回的数据量,可以减少服务器和数据库两者数据传输的时间,这将有利于减少web服务器响应数据的时间。常常是进行数据分页处理,减少每次传输数据,并且只对需要的数据进行返回

(3)使用数据库连接池

数据库连接池在系统初始化过程中会创建多个数据库连接,当有数据库访问请求到达时,不需要再进行数据库驱动加载、连接等步骤,而是直接从数据库连接池进行调用,这样减少数据库的访问时间,提高效率[4]。

3.3 缓存技术

缓存技术就是将访问过的内容进行记录保存,在下次访问时可以直接从记录中调用数据,从而提高访问速度。缓存技术分为操作系统磁盘缓存,数据库缓存,应用程序缓存,web服务器缓存,客户端浏览器缓存[5]。缓存技术可以使用在网站访问的各个环节,根据网站的服务对象和服务要求设置特定的方案,才能使缓存效果最好。

4 结语

网站的好坏与否,可以从不同的方向进行判断,但最主要是通过提升用户体验来体现。文章主要是从网站建设的角度,而对于搜索引擎优化方面的论述较少。通过综合运用客户端、服务器端和中间连接的优化技术,网站的整体性能得到更大的提高。并且随着大数据、人工智能等技术的运用将使网站性能得到更大的提升。

[1] 中国互联网络信息中心,中国互联网络发展状况统计报告[R],2017.1:14-15.

[2] 宋晓娟,房强.Web前端性能优化研究及应用[J].信息技术,2016,(10):198-202.

[3] 房辉,常盛.大型网站高性能架构研究[J].信息系统工程,2015,(12):76-77.

[4] 刘双双,段欣妤.基于JDBC的数据库连接池的煤矿安全监控技术体系建设[J].煤炭技术,2013,(07):166-168.

[5] 刘敏娜,解争龙.基于SSI框架的高性能网站服务器端优化技术[J].计算技术与自动化,2014,(03):139-144.

猜你喜欢
线程浏览器客户端
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
线程池调度对服务器性能影响的研究*
如何看待传统媒体新闻客户端的“断舍离”?
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
浏览器