好像现在一提到性能,大多数人都会想到负载均衡,分布式,CDN和缓存等等,很少把前端优化作为很重要的一部分来做,其实前端优化如果做得好的话,性能提高百分之几十是完全有可能的,特别是大访问量的web应用。因为我所在的项目遇到了严重的性能问题,所以就google了很多关于性能的文章,也写了和翻译了几篇关于Java性能的blog,有struts, jdbc, servlet, ejb等等方面的,有兴趣的朋友可以看一下我的其他blog, 也希望能多多交流。
Patrick Killelea写了一本很畅销的书叫"Web Performance Tuning", 里面很全面的介绍了web性能优化的方法和步骤。在web程序开发的过程中,很多项目都把很大的精力都用在了功能实现上,还有一部分用在了UI设计上,对于性能优化却是出了问题才考虑。其实应该从系统的需求和设计开始就着手进行性能的设计,而且放到跟功能一样的地位。
以下是这本书列出的top 10的性能优化技巧:
1. 使用weblint或者其他HTML 检查工具来检查HTML内容是不是符合HTML 4.0规范,符合HTML 4.0规范的页面会加载的更快。
2. 最小化Javascript和Style Sheets的使用,Javascript是不标准HTML内容的最大来源,虽然实现了很多非常炫的效果但是却放缓了页面加载的时间,Style Sheets是需要在页面显示之前单独下载的,所以也会放缓页面的加载速度。
3. 关闭DNS的反向解析,DNS反向解析会记录客户端的计算机名而不仅仅是IP地址, 这样就增加消耗。
4. 使用统计工具来检查你的web系统的性能瓶颈是出在DNS,网络连接,内容大小或者是服务器端,这样就可以从瓶颈处着手提高性能。
5. 使用简单的servlet或者CGI, 在系统不需要的话使用分布式程序反而会减低性能。
6. 加内存, 跟我们使用的电脑一样,加内存往往是成本最低效果最好的提高性能的方法。要知道内存速度比硬盘速度要搞一个数量级的。
7. 合理的给你的数据库加索引,当根据关键字进行全表查询时,加索引会有效的提高查询性能。
8. 最小化数据库查询,如果能把数据缓存到中间层或者servlet的话,just do it, 数据库连接往往是系统的性能瓶颈。
9. 使用网络工具检查网络丢包和重发, 断断续续的系统性能问题一般是因为网络丢包或者干扰。因为丢包和重新发送数据之间有一个时间间隔,这样就会使系统变得缓慢。
10. 使用工具来实时监视网站的性能。
如果你觉得这写方法都是耳熟能详的方法而且比较老的话,建议看一下我的另外两篇blog
Google Code是怎么实现页面加载速度提高30%-70%的
借用Google的Javascript API Loader来加速你的网站
另外还有Yahoo Develoer network出品的优化web的34条rules
Best Practices for Speeding Up Your Web Site
特别是Google Code优化Web的效果是在太令人震惊了,足以证明优化只要做得深入透彻,就能把Web性能发挥到极致。