鉴于B/S架构在维护成本和客户端配置等方面所具有的绝对优势,越来越多的系统采用了B/S架构,包括ERP、CRM等管理系统也开始向Internet靠拢。而B/S架构的系统却往往很难预计到系统并发访问数有多少,系统往往在高并发访问量的时候出现性能瓶颈,具体表现为页面提示超时信息或者提示数据库抛出的异常信息。为此,针对于B/S架构的面向Internet的系统,尤其是像淘宝、当当网等日访问量超过20余万的大型门户网站进行性能优化是势在必行!
针对大型门户网站系统的性能优化方案有以下几种:
(1)页面静态化
将动态页面采用静态的html页面文件代替!具体做法是在增加商品和更改商品信息时,将商品信息填充到模板页,并采用IO流生成对应的html商品信息文件,这样在下次用户点击查看商品信息等连接时,直接返回已经生成好的html静态页面即可,而不必临时访问数据库获取信息来填充动态页面,这样便避免了在高并发访问量时对数据库连接的争用,极大地减轻了数据库服务器端的压力!若系统并发访问数是一万的话,那将可以做到成万倍的性能提高!
业界流行的技术有Velocity技术和freemark技术。前者历史悠久,功能的可扩展性强,可以轻松扩展Velocity未实现的功能,业界使用及其广泛;后者由于更晚出现,性能方面做了一些改进,也占据了一定的市场份额。
(2)采用缓存技术
缓存技术即在一定的时间间隔内保存用户第一次访问的信息,以便在用户下次访问相同资源时直接使用!常用的缓存产品有:
OSCache(可以解决页面缓存也可以解决领域对象缓存)、EHCache(hibernate提供了,领域对象的缓存方案)、JbossCache(分布式缓存),其中JbossCache采用中央缓存服务器来缓存数据,以解决数据的一致性问题。
A、页面缓存,即在View层缓存Html代码,具有较好的性能优化效果,缺点也很明显:页面信息无法做到实时更新!
因为页面缓存在缓存有效期内不会访问数据库(但可以手动清空缓存),故无法做到数据的实时更新。只有对数据实时性要求不高的模块适合采用该技术,而像订单支付等功能模块则需要实时更新,不适合采用该技术!
B、二级缓存,即在model层缓存domain对象。可以做到实时更新,但性能优化效果比不上页面缓存技术。
(3)数据库连接池技术
通过缓存一定数量的数据库连接对象,以减少访问数据库时临时创建数据库连接的时间。
(4)SSI技术
服务器端静态包含技术。
通过对以上各项性能优化技术的综合运用,可以显著提高系统性能,满足客户需求!
关于大型门户网站系统的性能优化