web站点优化的理解[原创]

Posted: 2009年5月10日星期日
在网上看到很多文章在介绍web站点的优化方案,确实有作用,但都是片面的单独从一个角度去写的一个优化方案,很少有人比较全面的写一个优化方案,几乎都是要不从web页面上讲优化的条条款款,要不单独的从服务器上讲优化的条条款款,要不从db上写优化的条条款款。但这些优化方案局限性很大,很少有文章能提到一个全面的优化方案,下面是我自己所理解的一点web站点优化方案,个人认为前端优化是最重要的。当你的一个页面很大,到了一个页面2M,你服务器端优化做得再好,也是空的,你能及时的响应用户的请求,但是国内的用户现在的一个带宽情况你应该知道,光打开一个也面要多久时间,同时你服务器端的带宽是多少,带宽能承受得多少个用户同时并发,算算就知道了。再如果一个页面链接请求几百个,你服务器端优化得再好,承受的并发单台也只能做到不到十万个并发连接,同时浏览器还有对同一域名的并发限制,多域名的话,查询dns也是需要时间的。而国内做前端做得好的不是很多,包括alex排名非常高的各大网站(去掉google,baidu,页面元素太少,它们也确实做得很好),几乎前端做得很烂,真正做得好的是美国yahoo网站,大家可以去看看他的做法。yahoo工程师写了web前端优化的34条建议可以去看看,同时通过yahoo工程师写的firefox插件yslow去分析优化结果及优化建议。
再一个就是后端db的优化,因为db的连接是有限的,当数据量达到一定得规模,及出现db大并发时,db应该也是一个最慢的,当一个不合理的sql,很有可能就导致你网站的性能大打折扣,前端的web服务器优化得再好,也是空的,后端的db反应不过来,前端永远等待后端的结果,最好的做法就是少用db,能静态化页面,尽量静态化,能把数据缓存到cache中尽量缓存到cache中,优化sql链接,优化sql语句,当数据达到一定得数量级就分库,分表等操作。
第三个就是服务器的优化,这个做好,能基本提高大的并发,优化的方法应该用压力工具压(如:ab,webbench)几个简单的测试页面,进行调优,不是水平特别菜的sa的话,通过搜索引擎去查找别人的方案,依葫芦画瓢,基本上能达到一个不是很坏的结果。
再往后优化的话就是从架构上去做服务器的优化,不在本文讨论范围之类,这基本是包括最基本的优化方案,也是大部分站点能做的事情。做了以上的优化为老板节省了服务器及带宽资源。同时也使sa的工作量变少,因为管理的服务器越少,花在服务器维护的时间就越少,节省出来的时间可以做更多有意义的事情。
附yahoo的调查结果,后台只占5%,而前端高达95%之多,其中有88%的东西是可以优化的。

0 评论: