最近一段时间事情比较多,挺忙,博客也没怎么更新,最近有点小空,感觉应该写点东西了。
做网站前端的,只要稍微学习深入一点,就会知道网站优化(Website Optimization),大家比较熟悉的可能就是YSlow,YSlow提出了网站优化的13条建议(最新版本的好像是22条建议),其中就包括使用缓存和压缩代码等方法来减少传输的数据量,为什么要这样?为啥要减少数据量?这样做有什么好处?
可能大部分都会说,减少数据量可以让网页加载的更快,增强用户体验;另一方面减少数据量可以节省带宽,减少开支。的确以上两个方面是直观的感受,不过从技术方面深入探讨,还是可以进一步解释的。
首先第一个方面让网页加载更快,这个就不讨论了,很直白。第二个就是可以节省带宽,减少开支。自己百度了一下,据资料看,目前网络接入费用一般都是包月或包年,很少按流量计费的。既然如此,那还节省流量干嘛? 反正流量多少都是一样付款,那节省带宽怎么会节省开支呢?
下面从实际的例子开始分析,QQ已经非常普及了,相信很多人都在用,QQ的官方网站也用很多人每天访问,用户每打开QQ网站一次,都会从服务器读取一下数据,必然会产生数据流量。目前腾讯的Alexa全球排名为15,根据Alexa查询结果看,每天的平均IP量为2000万左右,每天的评价PV为3亿左右,下面我们根据这个数据来算一笔账:
目前腾讯QQ官网首页的数据量大致为467K(不包括网页flash,背景图片等),如果加上flash和背景图片,估计有500K左右,每天PV为3亿,那整个数据量约为:300000000*0.5M=150000000M。
1天=24小时,每小时的数据量约为:150000000M/24=6250000M。
1小时=3600秒,每秒的数据量约为:6250000M/3600=1736M(约合1.7G/s)
看到上面的结果,你就知道这个量有多大了吧,平均1秒要从服务器读取1.7G的数据量,这个数据量真是大的惊人,普通的ADSL极限状态也就2M/s,这个网速约相当于868个2M的ADSL同时达到极限传输状态。这么大的量,对服务器硬件,以及服务器维护、配置管理等都要求很高。
我们开始对网站进行优化假设,假如我们通过压缩图片、整合JavaScript/css文件,经过一番努力,使整个网页的体积减少了10K,即现在是490K。那这微不足道的10k优化意味着什么呢?
每天3亿PV,每个PV减少10K数据量:300000000*10/1024M=2929687.5M。
再进一步计算得出,每秒减少的数据量为:2929687.5M/3600/24=34M。
往往很多时候,优化的结果都会比这好,如果优化出100K,那每秒将减少340M的数据量,不要小看了这个数字,这可是340M/s,普通电脑的硬盘这个速度读取,估计一下就爆掉了。对于服务器来说,能减少340M/S的数据量,负载会有不少减轻,有时候多那么几M都有可能让服务器达到瓶颈,不得不扩展硬件,再对服务器进行优化调整等,这样就增加了开支和成本。
从以上分析看,网站优化非常必要,特别是流量大的站点,优化的成效会很可观。网站优化不仅仅关系到前端开发人员,而且对后台开发、维护人员也会有影响。一个优秀的前端开发人员,可以给后台开发人员带来很多便利;一个不好的前端开发人员,无形中会给后端开发人员带来很多麻烦,比如服务器带宽的上升,给服务器带来压力,进一步给维护人员造成压力。网站优化,不仅仅是为了节省流量!