在網站建設或者運營中,特別是在網站最佳化中,我們可能會遇到一個詞:“gzip壓縮”。那麼什麼是gzip呢?怎麼做gzip壓縮呢?
gzip是GNU zip的縮寫,它是一個GNU自由軟體的檔案壓縮程式,也經常用來表示gzip這種檔案格式。壓縮效率非常高,通常可以達到70%的壓縮率,一般的網頁體積是40KB左右,用gzip壓縮之後,只剩下12KB了。gzip壓縮採用通用的壓縮演算法壓縮HTML、JavaScript、CSS等靜態檔案和asp、aspx、php、jsp等動態檔案。是不是很不錯呢?我們通常所做的檔案打包也是壓縮的一種。為什麼不可以將我們的網頁“打包”發給瀏覽器來讀取呢?gzip的優點是:
可以節省頻寬資源;
加快網站載入速度。
節省頻寬,對於大部分的網站來說,都沒有什麼關係,因為很多的網站都是小網站,特別在東莞企業網站市場。節省頻寬沒有什麼特殊的用處。因為網站的流量本來就不大。
加快網站載入速度這點對大部分的網站來說就很有必要了,為什麼呢?因為網站開啟速度快慢和網站最佳化有很大的關係,也符合網站使用者體驗度,開啟快的網站,瀏覽者肯定很欣賞。你不可能喜歡一個開啟要8秒鐘的網站吧?對於一些網站來說,開啟速度慢一秒,至少會減少1%的營業額。所以,加快網站載入速度是網站gzip的最大用處。
HTTP壓縮工作原理
gzip是HTML壓縮演算法的一種,HTTP壓縮是在Web伺服器和瀏覽器間傳輸壓縮常值內容的方法。HTTP壓縮工作原理是:
Web伺服器接收到瀏覽器的HTTP請求後,檢查瀏覽器是否支援HTTP壓縮;
如果瀏覽器支援HTTP壓縮,Web伺服器檢查請求檔案的尾碼名;
如果請求檔案是HTML、CSS等靜態檔案,Web伺服器到壓縮緩衝目錄中檢查是否已經存在請求檔案的最新壓縮檔;
如果請求檔案的壓縮檔不存在,Web伺服器向瀏覽器返回未壓縮的請求檔案,並在壓縮緩衝目錄中存放請求檔案的壓縮檔;
如果請求檔案的最新壓縮檔已經存在,則直接返回請求檔案的壓縮檔;
如果請求檔案是ASPX等動態檔案,Web伺服器動態壓縮內容並返回瀏覽器,壓縮內容不存放到壓縮緩衝目錄中。
怎麼做gzip壓縮呢?大致有:在Contol Pannel開啟gzip、開啟http伺服器gzip、利用php本身的gzip。
IE6和Firefox都支援用戶端gzip,在網頁傳輸之前,先使用gzip壓縮再傳輸給用戶端,用戶端接收之後由瀏覽器解壓顯示。
IIS6已經內建了gzip壓縮的支援。在IIS6上做gzip壓縮的方法是:
如果你需要壓縮靜態檔案,可以先在硬碟上建立一個目錄,並給它“IUSR_機器名”這個使用者佈建寫入權限。如果壓縮動態檔案就可以不用這樣的,因為它的頁面是每次都動態產生的(頁面動態產生),壓縮完就放棄。然後在IIS管理器中,“網站”上面右鍵-屬性,不是下面的某個網站,而是整個網站。進入“服務”標籤,選上啟用動態內容壓縮,靜態內容壓縮。給gzip的臨時目錄空間不要太大了200MB左右就夠了.
然後選中網站下面那個伺服器擴充,建立一個伺服器擴充。可以用任何你想用的名字,下面的添加檔案的路徑是:
c:\windows\system32\inetsrv\gzip.dll,然後啟用這個擴充。
這時候靜態內容是可以壓縮的,但是對於動態內容,aspx檔案卻不在壓縮範圍內。我們只能去修改它的設定檔了。
在c:\windows\system32\inetsrv\下面有個MetaBase.xml檔案,可以用記事本開啟,找到IIsCompressionScheme,有三個相同名字的段,
分別是
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
<IIsCompressionSchemes Location ="/LM/W3SVC/Filters/Compression/Parameters"
前兩段有基本相同的參數,在這兩段的參數HcScriptFileExtensions下面都加上一行aspx,如果你有其它的動態程式要壓縮,也加在這裡。HcDynamicCompressionLevel改成9,9是性價比最高的一個。
至此,怎麼做gzip壓縮的過程我們就都實現了,需要注意的是:網頁啟用了gzip壓縮後網站開啟速度通常可能不會有太明顯的感覺(相對於瀏覽者),可以用一些特定的來檢查你的網頁是否壓縮過了,以及壓縮比和加快的速度。