WEB系统性能优化的研究与实践
摘要:该文结合社区警务管理系统的研发及实践,论述了针对web系统中普遍存在的性能问题及具体系统的特点,对影响系统性能的因素进行分析,出系统性能的瓶颈,并给出具体适用于web应用系统的性能优化方案和技术,如:索引应用、前端优化、缓存技术及负载均衡技术等,并将它们应用于社区警务管理系统中,使该系统性能得到了最大化的提升。
关键词:web系统;警务管理系统;性能优化
中图分类号:tp393 文献标识码:a 文章编号:1009-3044(2013)10-2324-04
1 概述
近几年,随着互联网快速的发展及广泛的应用,商业应用层出不穷,业务逻辑不断变复杂,以互联网和数据库技术为基础的各种信息管理系统已渗透到当今社会工作生活中的各个角落。随之而来的是应用技术和开发语言的日新月异,开发者需要永远不停的学习,对用户体验的要求也不断提升,同样,在web站点性能方面,开发者也一直在跟时间赛跑,因为软件性能早已成为评价软件质量的一个重要因素,对于站点经营者来说,让用户等待的时间过长,即系统性能
差,也许会造成毁灭性的后果,因此对系统性能进行合理的优化已成为当今系统技术负责人及程序员必备的专业技能和工作要求。该文通过研究具体适用于web应用系统的优化方案和技术,如:索引应用、动态网页静态化、缓存技术及负载均衡技术等,并将它们应用于笔者参与开发的衡阳市社区警务信息管理系统中,通过对比该系统应用优化技术前后性能的变化来验证该系列技术方案的可行性及适用性。
2 web系统性能优化策略
目前的web应用系统,不管是何种语言开发,粗略的结构一般均由三层构成:前台页面、业务逻辑、数据库。目前一般的页面技术,根据数据生成最终的html页面,性能关键指标可概括为页面的渲染速度。综合各种页面技术而言,渲染速度相差不会太大,10倍以内;业务逻辑,根据业务需要将数据库中的数据进行逻辑处理读取到内存中,以便通过页面模板渲染成html页面;数据库负责执行sql查询完成数据的交互。
所以多数web系统优化方案均可根据这三个部分进行设计。目前普遍的优化技术概括起来有:数据的网络传输、服务器并发处理能力、缓存技术(动态网页缓存、数据缓存、页面缓存、分布式缓存)、数据库分布式、负载均衡技术、性能监控方案等。
然而如何选择适合有效的优化方案,则必须根据系统实际情况对系统各方面进行性能监控和分析,出系统的性能瓶颈,从瓶颈问题出发,便会在系统性能优化工作中起到事半功倍的效果。
按照笔者目前积累的经验,对于一般web应用系统的优化方案可注意一下几个准则:
1)没必要去优化页面模板,这都是一些很成熟的技术,就算你好不容易提升了10%的性能,这10%在整个页面的执行过程中只占了0.5%的比例,微乎其微。
2)合理应用索引,优化查询。
3)缓存技术,简单而高效。
4)服务器压力相对较大的需求,分布式处理。
下面将以笔者参与开发的衡阳市社区警务管理信息系统为例,对优化该系统所采用的方案做介绍。
3 索引技术的应用
在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的sql?语句执行得更快。没有索引,条件查询时会搜索整个表,这样会消耗大量数据库系统时间,并造成大量磁盘i/o操作;如果在表中合理建立索引,则可以在索引中到符合查询条件的索引值,最后通过保存在索引中的rowid快速到表中对应的记录,而无需对整个表数据进行扫描。
而优化sql语句的关键是尽可能减少语句的logical reads(语句执行时需要访问的单位为8k的数据页总数)。logical reads 越少,其需要的内存和cpu时间也就越少,语句执行速度就越快。而索引的最大好处就是它可以极大减少sql语句的logical reads数目,从而极大减少语句的执行时间,提高系统的执行效率。创建索引的关键是索引要能够大大减少语句的logical reads。一个索引好不好,主要看它减少的logical reads多不多,因此要根据数据表实际的使用情况合理应用索引技术,下面将以社区警务管理信息系统为例,介绍笔者在该系统中合理应用索引优化系统的过程。
在衡阳社区警务管理系统人口管理模块中,涉及到衡阳市人口数据已达800多万,这给数据的查询性能提出了更高的要求。系统通过建立索引有效提升了查询性能。(笔者采用powerdesigner工具生成了800万条人口测试数据)
4 动态内容缓存技术
简单的说,缓存的目的就是把需要花费昂贵开销的计算结果保存起来,在以后需要的时候直接取出,而避免重复计算。在这里笔者所指的是由动态内容自行实现的缓存机制,包括整页缓存、局部缓存、数据缓存等。
4.1 页面缓存
对于动态网页来说,缓存的内容实际上就是动态网页输出的html,即页面缓存,而对于其他动态内容,比如图片或动态xml数据,也可以将它们的输出结果整体进行缓存,其实现机制和动态网页是一样的。
衡阳市社区警务信息管理系统采用asp平台开发,并且地图模块、治安模块页面信息量极大,因此使用@ outputcache指令实现页面输出缓存的一般性需求。@ outputcache指令在asp页或者页中包含的用户控件的头部声明。该指令中包括必需的 duration 和 varybyparam 或 varybycontrol 属,duration用于设置页面或者用户控件缓存的时间。单位是秒。通过设置该属性,能够为来自对象的http响应建立了一个过期策略,并将自动缓存页或
用户控件输出。duration必须为大于零的整数。varybycontrol属性使用一个分号分隔的字符串列表来更改用户控件的输出缓存。这些字符串代表在用户控件中声明的asp服务器控件的id属性值。除非已经包含了varybyparam属性,否则在@ outputcache指令中,该属性是必需的。
其指示页面输出缓存的有效期是100秒,并且页面不随任何get或post参数改变。在该页仍被缓存时接收到的请求由缓存数据提供服务。经过100秒后,将从缓存中移除该页数据,并随后显式处理下一个请求并再次缓存页。
前端优化性能的方法
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论