首先我們先了解Apache Gzip的相關(guān)資料。
一、gzip介紹
Gzip是一種流行的文件壓縮算法,現(xiàn)在的應(yīng)用十分廣泛,尤其是在Linux平臺(tái)。當(dāng)應(yīng)用Gzip壓縮到一個(gè)純文本文件時(shí),效果是非常明顯的,大約可以減少70%以上的文件大小。這取決于文件中的內(nèi)容。 利用Apache中的Gzip模塊,我們可以使用Gzip壓縮算法來(lái)對(duì)Apache服務(wù)器發(fā)布的網(wǎng)頁(yè)內(nèi)容進(jìn)行壓縮后再傳輸?shù)娇蛻舳藶g覽器。這樣經(jīng)過(guò)壓縮后實(shí)際上降低了網(wǎng)絡(luò)傳輸?shù)淖止?jié)數(shù),最明顯的好處就是可以加快網(wǎng)頁(yè)加載的速度。
網(wǎng)頁(yè)加載速度加快的好處不言而喻,除了節(jié)省流量,改善用戶的瀏覽體驗(yàn)外,另一個(gè)潛在的好處是Gzip與搜索引擎的抓取工具有著更好的關(guān)系。
二、Web服務(wù)器處理
HTTP壓縮的過(guò)程如下:
Web服務(wù)器接收到瀏覽器的HTTP請(qǐng)求后,檢查瀏覽器是否支持HTTP壓縮(Accept-Encoding 信息);
如果瀏覽器支持HTTP壓縮,Web服務(wù)器檢查請(qǐng)求文件的后綴名;
如果請(qǐng)求文件是HTML、CSS等靜態(tài)文件,Web服務(wù)器到壓縮緩沖目錄中檢查是否已經(jīng)存在請(qǐng)求文件的最新壓縮文件;
如果請(qǐng)求文件的壓縮文件不存在,Web服務(wù)器向?yàn)g覽器返回未壓縮的請(qǐng)求文件,并在壓縮緩沖目錄中存放請(qǐng)求文件的壓縮文件;
如果請(qǐng)求文件的最新壓縮文件已經(jīng)存在,則直接返回請(qǐng)求文件的壓縮文件;
如果請(qǐng)求文件是動(dòng)態(tài)文件,Web服務(wù)器動(dòng)態(tài)壓縮內(nèi)容并返回瀏覽器,壓縮內(nèi)容不存放到壓縮緩存目錄中。
三、開(kāi)啟Gzip
Apache利用Gzip壓縮算法進(jìn)行壓縮的模塊有兩種:mod_gzip 和mod_deflate。
現(xiàn)在瀏覽器本身也自動(dòng)Gzip壓縮功能,支持Accept-Encoding: gzip,deflate ,這里我在firefox瀏覽器下測(cè)試。
通過(guò)查看HTTP頭,我們可以快速判斷使用的客戶端瀏覽器是否支持接受gzip壓縮。
若發(fā)送的HTTP頭中出現(xiàn)以下信息,則表明你的瀏覽器支持接受相應(yīng)的gzip壓縮:
Accept-Encoding: gzip 支持mod_gzip
Accept-Encoding: deflate 支持mod_deflate
Accept-Encoding: gzip,deflate
同時(shí)支持mod_gzip 和mod_deflate Apache內(nèi)置有mod_deflate模塊來(lái)啟用gzip功能,但假如安裝apache的時(shí)候沒(méi)有編譯相關(guān)模塊,就需要你手動(dòng)安裝一次,以啟用它:
首先到你的apache源碼目錄,查找到mod_deflate.c文件 ,通常位置:apachehttpd源碼目錄/modules/filters/mod_deflate.c,進(jìn)入上面找到的目錄運(yùn)行下面的命令:
/usr/local/apache2/bin/apxs -i -c -a mod_deflate.c
注:apxs目錄請(qǐng)參照您自己的機(jī)器,通常在apache安裝目錄的bin目錄下。
安裝完成,到apache的modules目錄看看是不是有了mod_deflates.so,httpd.conf中打開(kāi)deflate_Module和headers_Module模塊:
LoadModule deflate_module modules/mod_deflate.so
加載mod_deflate.so模塊,默認(rèn)安裝會(huì)自動(dòng)寫(xiě)入httpd.conf。
如果服務(wù)器開(kāi)啟了對(duì)Gzip組件的支持,那么我們就可以在http.conf定制文件壓縮,下面是一個(gè)配置的簡(jiǎn)單實(shí)例:
1、mod_gzip方式
復(fù)制代碼 代碼如下:
# mod_gzip
<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file /.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
新聞熱點(diǎn)
疑難解答
圖片精選