最近一段時間事情比較多,挺忙,博客也沒怎么更新,最近有點小空,感覺應該寫點東西了。
做網站前端的,只要稍微學習深入一點,就會知道網站優化(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都有可能讓服務器達到瓶頸,不得不擴展硬件,再對服務器進行優化調整等,這樣就增加了開支和成本。
從以上分析看,網站優化非常必要,特別是流量大的站點,優化的成效會很可觀。網站優化不僅僅關系到前端開發人員,而且對后臺開發、維護人員也會有影響。一個優秀的前端開發人員,可以給后臺開發人員帶來很多便利;一個不好的前端開發人員,無形中會給后端開發人員帶來很多麻煩,比如服務器帶寬的上升,給服務器帶來壓力,進一步給維護人員造成壓力。網站優化,不僅僅是為了節省流量!