gzip(来源百度百科)
生活随笔
收集整理的這篇文章主要介紹了
gzip(来源百度百科)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
GZIP最早由Jean-loup Gailly和Mark Adler創(chuàng)建,用于UNIX系統(tǒng)的文件壓縮。我們在Linux中經(jīng)常會(huì)用到后綴為.gz的文件,它們就是GZIP格式的?,F(xiàn)今已經(jīng)成為Internet 上使用非常普遍的一種數(shù)據(jù)壓縮格式,或者說一種文件格式。HTTP協(xié)議上的GZIP編碼是一種用來改進(jìn)WEB應(yīng)用程序性能的技術(shù)。大流量的WEB站點(diǎn)常常使用GZIP壓縮技術(shù)來讓用戶感受更快的速度。
gzip 命令
減少文件大小有兩個(gè)明顯的好處,一是可以減少存儲(chǔ)空間,二是通過網(wǎng)絡(luò)傳輸文件時(shí),可以減少傳輸?shù)臅r(shí)間。gzip 是在 Linux 系統(tǒng)中經(jīng)常使用的一個(gè)對文件進(jìn)行壓縮和解壓縮的命令,既方便又好用。
語法:gzip [選項(xiàng)] 壓縮(解壓縮)的文件名
該命令的各選項(xiàng)含義如下:
-c 將輸出寫到標(biāo)準(zhǔn)輸出上,并保留原有文件。
-d 將壓縮文件解壓。
-l 對每個(gè)壓縮文件,顯示下列字段:
壓縮文件的大小;未壓縮文件的大小;壓縮比;未壓縮文件的名字
-r 遞歸式地查找指定目錄并壓縮其中的所有文件或者是解壓縮。
-t 測試,檢查壓縮文件是否完整。
-v 對每一個(gè)壓縮和解壓的文件,顯示文件名和壓縮比。
-num 用指定的數(shù)字 num 調(diào)整壓縮的速度,-1 或 --fast 表示最快壓縮方法(低壓縮比),
-9 或--best表示最慢壓縮方法(高壓縮比)。系統(tǒng)缺省值為 6。
指令實(shí)例:
gzip *
% 把當(dāng)前目錄下的每個(gè)文件壓縮成 .gz 文件。
gzip -dv *
% 把當(dāng)前目錄下每個(gè)壓縮的文件解壓,并列出詳細(xì)的信息。
gzip -l *
% 詳細(xì)顯示例1中每個(gè)壓縮的文件的信息,并不解壓。
gzip usr.tar
% 壓縮 tar 備份文件 usr.tar,此時(shí)壓縮文件的擴(kuò)展名為.tar.gz。
gzip可以級(jí)大的加速網(wǎng)站.有時(shí)壓縮比率高到80%,近來測試了一下,最少都有40%以上,還是相當(dāng)不錯(cuò)的.在Apache2之后的版本,模塊名不叫g(shù)zip,而叫mod_deflate
1、Apache啟用gzip
如果要開啟gzip的話,一定要打開下面二個(gè)模塊.
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so
設(shè)置壓縮比率,取值范圍在 1(最低) 到 9(最高)之間,不建議設(shè)置太高,雖然有很高的壓縮率,但是占用更多的CPU資源.
DeflateCompressionLevel 3
AddOutputFilter DEFLATE html xml php js css
<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary #對代理的設(shè)置
</Location>
下面二個(gè)測試網(wǎng)站
http://www.whatsmyip.org/mod_gzip_test/
http://www.gidnetwork.com/tools/gzip-test.php
測試數(shù)據(jù)對css
Original Size: 44 KB
Gzipped Size: 10 KB
Data Savings: 77.27%
測試數(shù)據(jù)js
Original Size: 6 KB
Gzipped Size: 2 KB
Data Savings: 66.67%
測試數(shù)據(jù)php
Original Size: 62 KB
Gzipped Size: 15 KB
Data Savings: 75.81%
上面只是隨機(jī)拿的幾個(gè)數(shù)據(jù),看的出來,使用了gzip壓縮后文件小多了.
另外講一下,有關(guān)squid對gzip的處理
在squid中,對同一個(gè)URL只保留一份緩存。對于如果不同browser(是否支持壓縮)如果頻繁交替訪問,例如:對某個(gè)cache住的目標(biāo),一個(gè)http/1.0請求可能會(huì)導(dǎo)致squid強(qiáng)制更新其緩存。但接下來的另一個(gè)http/1.1請求又會(huì)導(dǎo)致squid再次更新緩存。這樣那squid緩存數(shù)據(jù)就要頻繁更新,這就極大的降低了cache命中率。
不過還好,現(xiàn)實(shí)環(huán)境中不支持壓縮的browser畢竟是很少的情況,所以對于緩存命中率的降低很有限.
這個(gè)神通廣大的模塊就是mod_gzip.它通過用和gzip一樣的壓縮算法對apache發(fā)出的頁面進(jìn)行壓縮,可能的話可以把頁面壓縮成為原來大小的十份之一。哪,如果10K的頁面只要傳1K這不就是提速10倍嘛。當(dāng)然一般網(wǎng)頁只可以達(dá)到3-6倍。那也很不錯(cuò)。對吧。連google這樣一個(gè)大的網(wǎng)站都采用這個(gè)技術(shù)。你還不快跟上?
這樣一個(gè)好東東,來來來,我告訴你如何安裝:分3步,1、下載,2、修改配置,3、測試。
下載
到http://www.remotecommunications.com/apache/mod_gzip 下載mod_gzip.c 還有它的補(bǔ)丁。
安裝, 配置
把mod_gzip放到你的apache的源代碼目錄下,新建一個(gè)mod_gzip目錄如果需要補(bǔ)丁(針對1.3.17.la版) 還需運(yùn)行:
patch mod_gizp.c
按你需要,在配置中選擇動(dòng)態(tài)DSO或靜態(tài)編譯進(jìn)apache系統(tǒng)。如何處理在README中講得很清楚,如-add-module=mod_gzip.c, make,make install等等。這里不多講。
把下列配置加入httpd.conf尾部。
# MOD_GZIP configuration
mod_gzip_on Yes
mod_gzip_minimum_file_size 1002
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 60000
mod_gzip_item_include mime "application/x-httpd-php"
mod_gzip_item_include mime text/*
mod_gzip_item_include mime "httpd/unix-directory"
mod_gzip_dechunk Yes
mod_gzip_temp_dir "/tmp"
mod_gzip_keep_workfiles No
mod_gzip_item_include file ".php3$"
mod_gzip_item_include file ".txt$"
mod_gzip_item_include file ".html$"
mod_gzip_item_exclude file ".css$"
mod_gzip_item_exclude file ".js$"
在保存修改后運(yùn)行
…/bin/apachectl configtest確保配置修改無誤。
然后用 apachectl restart 指令重起服務(wù)。
修改,測試
在宣布做好了之前在測試一下是優(yōu)秀程序員的習(xí)慣。為了盡量不影響你的用戶的瀏覽,我們可以用把新的apache驅(qū)動(dòng)在8080端口上或者用指令控制mod_gzip起作用的目錄,而不是一下子全用mod_gzip.
用法如下:
MOD_GZIP configuration
沒有問題后你就可以讓你的用戶很開心的發(fā)現(xiàn)’XX網(wǎng)站現(xiàn)在好快哦?!?br /> Mod_gzip真的很神奇,100K的HTML大 文檔只要12K就可以傳到用戶端了。越先采用這個(gè)技術(shù)你的用戶對你的網(wǎng)站的高速度印象就越深。不過有所得必有所失,由于解壓是在客戶端進(jìn)行的,效果和用戶 的瀏覽器有一定關(guān)系。
2、IIS啟用gzip
現(xiàn)代的瀏覽器IE6和Firefox都支持客戶端Gzip,也就是說,在服務(wù)器上的網(wǎng)頁,傳輸之前,先使用Gzip壓縮再傳輸給客戶端,客戶端接收之后由瀏覽器解壓顯示,這樣雖然稍微占用了一些服務(wù)器和客戶端的CPU,但是換來的是更高的帶寬利用率。對于純文本來講,壓縮率是相當(dāng)可觀的。如果每個(gè)用戶節(jié)約50%的帶寬,那么你租用來的那點(diǎn)帶寬就可以服務(wù)多一倍的客戶了。
IIS6已經(jīng)內(nèi)建了Gzip壓縮的支持,可惜,沒有設(shè)置更好的管理界面。所以要打開這個(gè)選項(xiàng),還要費(fèi)些功夫。
首先,如果你需要壓縮靜態(tài)文件(HTML),需要在硬盤上建一個(gè)目錄,并給它“IUSR_機(jī)器名”這個(gè)用戶的寫權(quán)限。如果壓縮動(dòng)態(tài)文件(PHP,asp,aspx)就不需要了,因?yàn)樗捻撁媸敲看味紕?dòng)態(tài)生成的,壓縮完就放棄。然后在IIS管理器中,“網(wǎng)站”上面右鍵-屬性,不是下面的某個(gè)站點(diǎn),而是整個(gè)網(wǎng)站。進(jìn)入“服務(wù)”標(biāo)簽,選上啟用動(dòng)態(tài)內(nèi)容壓縮,靜態(tài)內(nèi)容壓縮。
然后選中網(wǎng)站下面那個(gè)服務(wù)器擴(kuò)展,新建一個(gè)服務(wù)器擴(kuò)展。名字無所謂,下面的添加文件的路徑是:
c:\windows\system32\inetsrv\gzip.dll,然后啟用這個(gè)擴(kuò)展。
這時(shí)候靜態(tài)內(nèi)容是可以壓縮的,但是對于動(dòng)態(tài)內(nèi)容,aspx文件卻不在壓縮范圍內(nèi)。因?yàn)槟J(rèn)的可壓縮文件并沒有這個(gè)擴(kuò)展名。而管理界面中你又找不到可以增加擴(kuò)展名的地方,這時(shí)候只能去修改它的配置文件了。
在 c:\windows\system32\inetsrv\下面有個(gè)MetaBase.xml文件,可以用記事本打開,找到IIsCompressionScheme,有三個(gè)相同名字的段,分別是deflate,gzip,Parameters,第三段不用管它,前兩段有基本相同的參數(shù),在這兩段的參數(shù)HcScriptFileExtensions下面都加上一行aspx,如果你有其它的動(dòng)態(tài)程序要壓縮,也加在這里。HcDynamicCompressionLevel改成9,(0-10,9是性價(jià)比最高的一個(gè))。
gzip 命令
減少文件大小有兩個(gè)明顯的好處,一是可以減少存儲(chǔ)空間,二是通過網(wǎng)絡(luò)傳輸文件時(shí),可以減少傳輸?shù)臅r(shí)間。gzip 是在 Linux 系統(tǒng)中經(jīng)常使用的一個(gè)對文件進(jìn)行壓縮和解壓縮的命令,既方便又好用。
語法:gzip [選項(xiàng)] 壓縮(解壓縮)的文件名
該命令的各選項(xiàng)含義如下:
-c 將輸出寫到標(biāo)準(zhǔn)輸出上,并保留原有文件。
-d 將壓縮文件解壓。
-l 對每個(gè)壓縮文件,顯示下列字段:
壓縮文件的大小;未壓縮文件的大小;壓縮比;未壓縮文件的名字
-r 遞歸式地查找指定目錄并壓縮其中的所有文件或者是解壓縮。
-t 測試,檢查壓縮文件是否完整。
-v 對每一個(gè)壓縮和解壓的文件,顯示文件名和壓縮比。
-num 用指定的數(shù)字 num 調(diào)整壓縮的速度,-1 或 --fast 表示最快壓縮方法(低壓縮比),
-9 或--best表示最慢壓縮方法(高壓縮比)。系統(tǒng)缺省值為 6。
指令實(shí)例:
gzip *
% 把當(dāng)前目錄下的每個(gè)文件壓縮成 .gz 文件。
gzip -dv *
% 把當(dāng)前目錄下每個(gè)壓縮的文件解壓,并列出詳細(xì)的信息。
gzip -l *
% 詳細(xì)顯示例1中每個(gè)壓縮的文件的信息,并不解壓。
gzip usr.tar
% 壓縮 tar 備份文件 usr.tar,此時(shí)壓縮文件的擴(kuò)展名為.tar.gz。
[編輯本段]IIS或Apache啟用GZIP壓縮優(yōu)化網(wǎng)站 先來了解一下GZIP,gzip是GNU zip的縮寫,它是一個(gè)GNU自由軟件的文件壓縮程序,也經(jīng)常用來表示gzip這種文件格式。軟件的作者是Jean-loupGailly和Mark Adler。1992年10月31日第一次公開發(fā)布,版本號(hào)是0.1,目前的穩(wěn)定版本是1.2.4。
gzip可以級(jí)大的加速網(wǎng)站.有時(shí)壓縮比率高到80%,近來測試了一下,最少都有40%以上,還是相當(dāng)不錯(cuò)的.在Apache2之后的版本,模塊名不叫g(shù)zip,而叫mod_deflate
1、Apache啟用gzip
如果要開啟gzip的話,一定要打開下面二個(gè)模塊.
LoadModule headers_module modules/mod_headers.so
LoadModule deflate_module modules/mod_deflate.so
設(shè)置壓縮比率,取值范圍在 1(最低) 到 9(最高)之間,不建議設(shè)置太高,雖然有很高的壓縮率,但是占用更多的CPU資源.
DeflateCompressionLevel 3
AddOutputFilter DEFLATE html xml php js css
<Location />
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary #對代理的設(shè)置
</Location>
下面二個(gè)測試網(wǎng)站
http://www.whatsmyip.org/mod_gzip_test/
http://www.gidnetwork.com/tools/gzip-test.php
測試數(shù)據(jù)對css
Original Size: 44 KB
Gzipped Size: 10 KB
Data Savings: 77.27%
測試數(shù)據(jù)js
Original Size: 6 KB
Gzipped Size: 2 KB
Data Savings: 66.67%
測試數(shù)據(jù)php
Original Size: 62 KB
Gzipped Size: 15 KB
Data Savings: 75.81%
上面只是隨機(jī)拿的幾個(gè)數(shù)據(jù),看的出來,使用了gzip壓縮后文件小多了.
另外講一下,有關(guān)squid對gzip的處理
在squid中,對同一個(gè)URL只保留一份緩存。對于如果不同browser(是否支持壓縮)如果頻繁交替訪問,例如:對某個(gè)cache住的目標(biāo),一個(gè)http/1.0請求可能會(huì)導(dǎo)致squid強(qiáng)制更新其緩存。但接下來的另一個(gè)http/1.1請求又會(huì)導(dǎo)致squid再次更新緩存。這樣那squid緩存數(shù)據(jù)就要頻繁更新,這就極大的降低了cache命中率。
不過還好,現(xiàn)實(shí)環(huán)境中不支持壓縮的browser畢竟是很少的情況,所以對于緩存命中率的降低很有限.
這個(gè)神通廣大的模塊就是mod_gzip.它通過用和gzip一樣的壓縮算法對apache發(fā)出的頁面進(jìn)行壓縮,可能的話可以把頁面壓縮成為原來大小的十份之一。哪,如果10K的頁面只要傳1K這不就是提速10倍嘛。當(dāng)然一般網(wǎng)頁只可以達(dá)到3-6倍。那也很不錯(cuò)。對吧。連google這樣一個(gè)大的網(wǎng)站都采用這個(gè)技術(shù)。你還不快跟上?
這樣一個(gè)好東東,來來來,我告訴你如何安裝:分3步,1、下載,2、修改配置,3、測試。
下載
到http://www.remotecommunications.com/apache/mod_gzip 下載mod_gzip.c 還有它的補(bǔ)丁。
安裝, 配置
把mod_gzip放到你的apache的源代碼目錄下,新建一個(gè)mod_gzip目錄如果需要補(bǔ)丁(針對1.3.17.la版) 還需運(yùn)行:
patch mod_gizp.c
按你需要,在配置中選擇動(dòng)態(tài)DSO或靜態(tài)編譯進(jìn)apache系統(tǒng)。如何處理在README中講得很清楚,如-add-module=mod_gzip.c, make,make install等等。這里不多講。
把下列配置加入httpd.conf尾部。
# MOD_GZIP configuration
mod_gzip_on Yes
mod_gzip_minimum_file_size 1002
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 60000
mod_gzip_item_include mime "application/x-httpd-php"
mod_gzip_item_include mime text/*
mod_gzip_item_include mime "httpd/unix-directory"
mod_gzip_dechunk Yes
mod_gzip_temp_dir "/tmp"
mod_gzip_keep_workfiles No
mod_gzip_item_include file ".php3$"
mod_gzip_item_include file ".txt$"
mod_gzip_item_include file ".html$"
mod_gzip_item_exclude file ".css$"
mod_gzip_item_exclude file ".js$"
在保存修改后運(yùn)行
…/bin/apachectl configtest確保配置修改無誤。
然后用 apachectl restart 指令重起服務(wù)。
修改,測試
在宣布做好了之前在測試一下是優(yōu)秀程序員的習(xí)慣。為了盡量不影響你的用戶的瀏覽,我們可以用把新的apache驅(qū)動(dòng)在8080端口上或者用指令控制mod_gzip起作用的目錄,而不是一下子全用mod_gzip.
用法如下:
MOD_GZIP configuration
沒有問題后你就可以讓你的用戶很開心的發(fā)現(xiàn)’XX網(wǎng)站現(xiàn)在好快哦?!?br /> Mod_gzip真的很神奇,100K的HTML大 文檔只要12K就可以傳到用戶端了。越先采用這個(gè)技術(shù)你的用戶對你的網(wǎng)站的高速度印象就越深。不過有所得必有所失,由于解壓是在客戶端進(jìn)行的,效果和用戶 的瀏覽器有一定關(guān)系。
2、IIS啟用gzip
現(xiàn)代的瀏覽器IE6和Firefox都支持客戶端Gzip,也就是說,在服務(wù)器上的網(wǎng)頁,傳輸之前,先使用Gzip壓縮再傳輸給客戶端,客戶端接收之后由瀏覽器解壓顯示,這樣雖然稍微占用了一些服務(wù)器和客戶端的CPU,但是換來的是更高的帶寬利用率。對于純文本來講,壓縮率是相當(dāng)可觀的。如果每個(gè)用戶節(jié)約50%的帶寬,那么你租用來的那點(diǎn)帶寬就可以服務(wù)多一倍的客戶了。
IIS6已經(jīng)內(nèi)建了Gzip壓縮的支持,可惜,沒有設(shè)置更好的管理界面。所以要打開這個(gè)選項(xiàng),還要費(fèi)些功夫。
首先,如果你需要壓縮靜態(tài)文件(HTML),需要在硬盤上建一個(gè)目錄,并給它“IUSR_機(jī)器名”這個(gè)用戶的寫權(quán)限。如果壓縮動(dòng)態(tài)文件(PHP,asp,aspx)就不需要了,因?yàn)樗捻撁媸敲看味紕?dòng)態(tài)生成的,壓縮完就放棄。然后在IIS管理器中,“網(wǎng)站”上面右鍵-屬性,不是下面的某個(gè)站點(diǎn),而是整個(gè)網(wǎng)站。進(jìn)入“服務(wù)”標(biāo)簽,選上啟用動(dòng)態(tài)內(nèi)容壓縮,靜態(tài)內(nèi)容壓縮。
然后選中網(wǎng)站下面那個(gè)服務(wù)器擴(kuò)展,新建一個(gè)服務(wù)器擴(kuò)展。名字無所謂,下面的添加文件的路徑是:
c:\windows\system32\inetsrv\gzip.dll,然后啟用這個(gè)擴(kuò)展。
這時(shí)候靜態(tài)內(nèi)容是可以壓縮的,但是對于動(dòng)態(tài)內(nèi)容,aspx文件卻不在壓縮范圍內(nèi)。因?yàn)槟J(rèn)的可壓縮文件并沒有這個(gè)擴(kuò)展名。而管理界面中你又找不到可以增加擴(kuò)展名的地方,這時(shí)候只能去修改它的配置文件了。
在 c:\windows\system32\inetsrv\下面有個(gè)MetaBase.xml文件,可以用記事本打開,找到IIsCompressionScheme,有三個(gè)相同名字的段,分別是deflate,gzip,Parameters,第三段不用管它,前兩段有基本相同的參數(shù),在這兩段的參數(shù)HcScriptFileExtensions下面都加上一行aspx,如果你有其它的動(dòng)態(tài)程序要壓縮,也加在這里。HcDynamicCompressionLevel改成9,(0-10,9是性價(jià)比最高的一個(gè))。
轉(zhuǎn)載于:https://www.cnblogs.com/silverLee/archive/2009/11/03/1595011.html
總結(jié)
以上是生活随笔為你收集整理的gzip(来源百度百科)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: as2 AVM1对象和as3对象的通信
- 下一篇: asp.net Repeater取得Ch