Web开发中的三种缓存模式对页面访问速度影响和分析

          Web程序性能优化有多个方面,比如sql优化、集群、负载均衡、购买更强悍的硬件、采用缓存框架等等办法。但是缓存框架就有很多种:页面静态化、JSP页面缓存、后台方法缓存、ORM查询结果缓存、数据库缓存、缓存服务器等。

          在这里我对无任何缓存、缓存后台方法、缓存JSP页面、页面静态化这四种方式,接着用压力测试分析工具进行100次请求对比,并求平均响应速度:

请求地址:xxxx.do   功能:查询后台数据,输出到jsp页面。 测试机器:华硕笔记本N61,CPU I7,内存4G Win7 Oracle

1、无任何缓存

100次请求平均响应时间是10929毫秒

 

2、缓存后台方法

100次请求平均响应时间是783毫秒

 

3、缓存JSP页面

100次请求平均响应时间是15毫秒

 

 

4、HTM静态化

100次请求平均响应时间1毫秒

 

          以上测试数据不一定绝对精确,但有部分的代表性,这样我们可以根据测试结果来选择我们的缓存技术。

测试1结论:没有采用缓存技术是如此滴悲剧呀~

 

测试2测试结论:缓存后台方法(使用memercache中央缓存),忽略了数据库查询的性能,值所以还需要783毫秒主要性能在结果集输出到jsp里花费了大量时间,如果是freemark输出,可能效率会稍微高一些吧。

 

测试3结论:忽略了数据库查询、忽略了后台输出数据到JSP的时间,已经很接近页面静态化了性能了,

 

测试4结论:还是页面静态化速度最快呀!

 

总结:

      有缓存比无缓存差距真的好大!测试3由于这里使用ehcache缓存JSP页面,相当于是内存级的缓存,理论上应该是比HTM静态化速度快,为何实际上比HTML静态化页面速度慢呢? 我们学过操作系统理论,计算机访问速度从快到慢是  寄存器->内存->硬盘->数据库,其它的高速缓存、缓冲技术都是介于这几项之间。个人认为之所以出现“内存缓存”比“硬盘缓存”慢有几个原因:

1 apache解析静态化页面比jsp/servlet容器速度快,

2 servlet需要若干个过滤、拦截、安全、编码等过滤机制等框架特性越来越多,会导致一些方法调用上的性能开销

3 现在的硬盘高速缓存做的比较牛,内存和硬盘高速缓存的差距越来越小,有时候升级硬件配置,也是提高性能的一个手段

4 相当于静态化造成的大量占用系统磁盘、数据更新、无效数据删除问题。选择JSP+后台方法缓存、搭建一个memercache中央缓存服务器(我的设置了30G内存的缓存容量)可以做到很接近于静态化页面的技术方案,并能配置监听修改的数据之后刷新缓存数据注解,无须担心数据实时性的问题。这种技术可以作为不喜欢搞页面静态化的人的一种解决方案。

 

主意事项:请勿严格拿以上的数据做一个速度上的对比,比如XX技术是YY技术的几倍这种比较,场景比一样、业务不一样,很难有一个精确的数据,但根据压力测试得出来数据的大小,至少能说明哪个缓存技术更适合您!

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页