一、gzip介紹
gzip是GNU zip的縮寫,它是一個GNU自由軟體的檔案壓縮程序,也常用來表示gzipip檔格式。軟體的作者是Jean-loup Gailly和Mark Adler。 1992年10月31日第一次公開發布,版本號是0.1,目前的穩定版本是1.2.4。
Gzip主要用於Unix系統的檔案壓縮。我們在Linux中常會用到後綴為.gz的文件,它們就是GZIP格式的。現今已經成為Internet 上使用非常普遍的一種資料壓縮格式,或者說一種檔案格式。 當應用Gzip壓縮到一個純文字檔案時,效果是非常明顯的,經過GZIP壓縮後頁面大小可以變成原來的40%甚至更小,這取決於檔案中的內容。
HTTP協定上的GZIP編碼是一種用來改進WEB應用程式效能的技術。 web開發中可以透過gzip壓縮頁面來降低網站的流量,而gzip並不會對cpu造成大量的佔用,略微上升,也是幾個百分點而已,但是對於頁面卻能壓縮30%以上,非常划算。
使用Apache中的Gzip模組,我們可以使用Gzip壓縮演算法來對Apache伺服器發佈的網頁內容進行壓縮後再傳送到客戶端瀏覽器。這樣經過壓縮後實際上降低了網路傳輸的位元組數(節省傳輸的網路I/o),最明顯的好處就是可以加快網頁載入的速度。
網頁載入速度加快的好處不言而喻,除了節省流量,改善用戶的瀏覽體驗外,另一個潛在的好處是Gzip與搜尋索引擎的抓取工具有著更好的關係。例如 Google就可以透過直接讀取gzip檔案來比普通手動抓取更快地檢索網頁。在Google網站管理員工具(Google Webmaster Tools)中你可以看到,sitemap.xml.gz 是直接作為Sitemap被提交的。
而這些好處不僅限於靜態內容,PHP動態頁和其他動態產生的內容均可透過使用Apache壓縮模組壓縮,加上其他的效能調整機制和對應的伺服器端快取規則,這可以大幅提高網站的效能。因此,對於部署在Linux伺服器上的PHP程序,在伺服器支援的情況下,我們建議你開啟使用Gzip Web壓縮。
二、Web伺服器處理HTTP壓縮的過程如下:
1. Web伺服器檢查到瀏覽器
1.Web伺服器 );
2. 如果瀏覽器支援HTTP壓縮,Web伺服器檢查請求檔案的後綴名;
3. 如果請求檔案是HTML、CSS等靜態文件,WebWeb已經存在請求文件的最新壓縮文件; 4. 如果請求文件的壓縮文件不存在,
Web伺服器向瀏覽器返回未壓縮的請求文件,並在壓縮緩衝目錄中存放請求文件的壓縮文件;
5. 如果請求文件的最新壓縮文件已經存在,則直接返回請求文件的壓縮文件; 6. 如果請求文件是動態文件,
Web伺服器動態壓縮內容並返回瀏覽器,壓縮內容不存放到壓縮快取目錄中。 三、啟用Apache的gzip功能
p要使用Gzip Web壓縮,請先確定你的伺服器開啟了對這兩個元件之一的支援。
雖然使用Gzip同時也需要客戶端瀏覽器的支持,不過不用擔心,目前大部分瀏覽器都已經支援Gzip了,如IE、Mozilla Firefox、Opera、Chrome等。 透過檢視HTTP頭,我們可以快速判斷所使用的用戶端瀏覽器是否支援接受gzip壓縮。若發送的HTTP頭中出現以下訊息,表示你的瀏覽器支援接受對應的gzip壓縮:程式碼如下:Accept-Encoding: gzip 支援mod_gzip
cept-Encoding: deflate 支援: gzip,deflate 同時支援mod_gzip 和mod_deflate
如firebug查看:
0150921134031_7389 .jpg" alt="Apache php gzip壓縮輸出的實作方法" />
Accept-Encoding: gzip,deflate 是同時支援mod_gzip 和mod_deflateContent-Encoding: gzip
firebug查看:
注意:1)不管使用mod_gzip 或mod_deflate,此處傳回的資訊都一樣。因為它們都是實現的gzip壓縮方式。 2)CompressionLevel 9是指壓縮程度的等級(設定壓縮比率),取值範圍在從1到9,9是最高等級。據了解,這樣做最高可以減少8成大小的傳輸量(看檔案內容而定),最少也能夠 節省一半。 CompressionLevel 預設可以採用6 這個數值,以維持耗用處理器效能與網頁壓縮品質的平衡. 不建議設定太高,如果設定很高,雖然有很高的壓縮率,但是佔用更多的CPU資源.
3) 對已經是壓縮過的圖片格式如jpg,音樂檔案如mp3、壓縮檔案如zip之類的,就沒必要再壓縮了。 四、mod_gzip 和mod_deflate的主要差異是什麼?使用哪個比較好呢? 第一個差異是安裝它們的
Web伺服器
版本的差異: