據調查,
企業網站網頁大小在2013年平均增長了32%,平均達到了1.7M,單獨的HTTP請求達到96個,說實話,這是一個令人震驚的數字,而且這只是個平均值,有一半的企業網站會大於這個值。
那麼,一個“頁面超重”的網站有什麼影響呢?具體來說,有以下4點:
①、網站代碼越多,用戶下載的就越多,加載速度就會越慢。在國內,並不是每個人都能享受20M的寬帶,每一個開發者心裏都很清楚,用戶不願意等。
②、衆所周知,
移動互聯網發展迅速,對於2G網絡來說,加載1.7M的頁面甚至需要一分鐘時間。
④、對於開發者來說,代碼量越大,就越不容易更新和維護。
如今已經有很多人開始關注這個問題,並出現了很多優化的工具,而且這些技術都非常容易上手,不需要花太多時間,也不需要重新開發。
1、用GZIP格式壓縮
gzip是GNUzip的縮寫,它是一個GNU自由軟件的文件壓縮程序。它是Jean-loupGailly和MarkAdler一起開發的,第一次公開發布版本是1992年10月31日發佈的版本0.1,1993年2月發佈了版本1.0。
我們在Linux中經常會用到後綴爲.gz的文件,它們就是GZIP格式的,現今已經成爲Internet上使用非常普遍的一種數據壓縮格式,或者說一種文件格式。
HTTP協議上的GZIP編碼是一種用來改進WEB應用程序性能的技術,大流量的WEB站點常常使用GZIP壓縮技術來讓用戶感受更快的速度。
這一般是指WWW服務器中安裝的一個功能,當有人來訪問這個服務器中的網站時,服務器中的這個功能就將網頁內容壓縮後傳輸到來訪的電腦瀏覽器中顯示出來。
一般對純文本內容可壓縮到原大小的40%,這樣傳輸就快了,效果就是你點擊網址後會很快的顯示出來,當然這也會增加服務器的負載,一般服務器中都安裝有這個功能模塊的。
根據W3C組織調查,大部分的網站都沒有啓用壓縮功能。
2、支持瀏覽器緩存
如果瀏覽器支持緩存,我們就不用重複下載網頁資源,最簡單的設置緩存方法是在響應頭中添加相應的內容,包括:Expires header,Last-Modified等。
3、使用內容分發網絡 (CDN)
CDN的全稱是Content Delivery Network,即內容分發網絡。其目的是通過在現有的Internet中增加一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡“邊緣”,使用戶可以就近取得所需的內容,提高用戶訪問網站的響應速度。
CDN有別於鏡像,因爲它比鏡像更智能,或者可以做這樣一個比喻:CDN=更智能的鏡像+緩存+流量導流。
因而,CDN可以明顯提高Internet網絡中信息流動的效率,從技術上全面解決由於網絡帶寬小、用戶訪問量大、網點分佈不均等問題,提高用戶訪問網站的響應速度。
爲更好地理解CDN,讓我們看一下CDN的工作流程,當用戶訪問已經加入CDN服務的網站時,首先通過DNS重定向技術確定最接近用戶的最佳CDN節點,同時將用戶的請求指向該節點。
當用戶的請求到達指定節點時,CDN的服務器(節點上的高速緩存)負責將用戶請求的內容提供給用戶。
具體流程爲: 用戶在自己的瀏覽器中輸入要訪問的網站的域名,瀏覽器向本地DNS請求對該域名的解析,本地DNS將請求發到網站的主DNS,主DNS根據一系列的策略確定當時最適當的CDN節點,並將解析的結果(IP地址)發給用戶,用戶向給定的CDN節點請求相——應網站的內容。
以上三個方法可以有效地加快頁面的訪問速度,現在我們將對你的代碼進行診斷,幫助我們給頁面減肥。
4、刪除不需要的資源
當你不再需要一個組件的時候,你應該刪掉它的CSS和JavaScript代碼,如果這些代碼都單獨放在一個文件中,那刪掉它們也不是難事,但如果已經沒有用的代碼和其它代碼在一個文件中,那你肯定要費不少精力去刪掉它們。
5、style和font重複定義的沉餘代碼
要充分利用好CSS代碼定義自己的顏色大小等,有些網站既用了CSS代碼定義了之後又去使用style或者是font這樣的代碼進行定義,這樣就無形中增加了無用代碼,容易造成代碼冗餘,因此我們要對這樣的代碼進行壓縮,實現代碼精簡。
6、通用和最小化CSS
理想情況下,需要一個單獨的CSS文件,讓每個頁面都調用這一個佈局,當然,如果你想要支持老版本的IE,你就得多弄一個CSS文件。
最後,在head標籤中加載所有的CSS,這樣瀏覽器就知道你的頁面樣式不用多次重繪了。
7、通用和最小化的JavaScript
利用外部文件,我們可以用Javascript代碼和CSS代碼放在外部文件裏面,在我們的HTML代碼裏面加上調用代碼進行調用即可,如果打開一個網站去檢查它的源文件,前面如果有大量的Javascript代碼和CSS代碼就容易使得網站有用的內容文字部分推到後面去了,是不利於搜索引擎抓取的。
據收集的數據顯示:平均每個頁面加載了18個javascript文件,雖然把像jQuery這樣的庫文件單獨分開非常實用,但是你自己的JavaScript代碼應該保持通用和最小化。
同樣很多第三方的工具可以幫你解決這樣事情,比如YUI Compressor,Closure Compiler和我最喜歡用的The JavaScript CompressorRater,簡化的JavaScript代碼會加快網頁的訪問速度,減少HTTP請求次數。
最後,最好在HTML的body標籤後放置JavaScript引用代碼,這樣能保證JavaScript代碼不影響到其它內容的加載。
8、減少頁面嵌套的表格
對於表格要儘量少使用,尤其是嵌套的表格部分,雖然CSS排版使得我們編寫代碼更加的精簡容易,但往往也是少不了表格的使用的,我們可以不去避免,但一定要減少使用多層嵌套的表格,不要產生沒有用的代碼。
9、網站圖片的優化
對於一些圖片站來說,加載錯誤的圖片格式會對你的網頁造成很大影響,所以,建議圖片站的站長一定要多對圖片做些優化。
(1)、圖片優化原則
一般來說選取圖片我們應用遵循如下原則:
①、照片使用JPG格式。
②、其它所有的圖片都使用PNG格式。
(2)、調整大圖的大小
目前智能機所拍出的照片越來越大,你不可能把原照片直接展示在頁面中,普通的編輯器都會直接上傳原圖,這樣會讓頁面的加載速度慢到另一個級別,在正常的照片處理中,一般都沒有必要給用戶高質量的圖片展示,所以,你需要一個自動調整圖片大小的工具。
需要注意的是,圖片的尺寸是不能超過容量的大小的,這樣一來頁面加載了全圖,卻無法展示出來,現在照片的尺寸基本上都超過電腦顯示屏的尺寸了。
圖片的大小在網頁總大小中佔很大的比重,圖片減小50%會導致整體頁面大小減少75%,所以你應該認真解決一下圖片的加載。
(3)、進一步壓縮圖片
僅僅調優圖片的大小是不夠的,你應該通過第三方工具對圖片進行分析,進一步壓縮圖片。
比較好用的工具有OptiPNG,PNGOUT,jpegtran和jpegoptim,這些工具大都能安裝成獨立的工具或是整合到開發過程中,另外像Smush這樣的工具,還可以直接在雲端處理。
10、刪除不必要的字體和註釋
Web fonts已經徹底改變了字體的設計,它減少了很多不必要的文本,然而,目前的字體仍然會給你的網頁帶來多餘的字節。
如果你使用超過兩種字體,這就已經開始對性能造成影響了。
企業網站網頁代碼儘量少用註釋,我們知道一段程序裏面加上註釋能夠便於我們快速找到和理解具體代碼對應的功能,對於編程人員修改網頁是有幫助的,但是這樣的代碼對於搜索引擎來說是沒有任何的意義的,只能說是噪聲,因此我們要減少網頁代碼裏面出現的註釋部分。
我相信大部分網站都可以通過以上的優化減小大概30%-50%的重量。