HTTP協(xié)議上的GZIP編碼是一種用來改進WEB應(yīng)用程序性能的技術(shù)束亏。大流量的WEB站點常常使用GZIP壓縮技術(shù)來讓用戶感受更快的速度。這一般是指WWW服務(wù)器中安裝的一個功能截汪,當(dāng)有人來訪問這個服務(wù)器中的網(wǎng)站時,服務(wù)器中的這個功能就將網(wǎng)頁內(nèi)容壓縮后傳輸?shù)絹碓L的電腦瀏覽器中顯示出來.一般對純文本內(nèi)容可壓縮到原大小的40%.這樣傳輸就快了,效果就是你點擊網(wǎng)址后會很快的顯示出來.當(dāng)然這也會增加服務(wù)器的負(fù)載. 一般服務(wù)器中都安裝有這個功能模塊的匠璧。
減少文件大小有兩個明顯的好處,一是可以減少存儲空間咸这,二是通過網(wǎng)絡(luò)傳輸文件時夷恍,可以減少傳輸?shù)臅r間。gzip 是在 Linux 系統(tǒng)中經(jīng)常使用的一個對文件進行壓縮和解壓縮的命令媳维,既方便又好用酿雪。
GZip壓縮的基本流程如下:
1. Web服務(wù)器接收到瀏覽器的HTTP請求后,檢查瀏覽器是否支持HTTP壓縮(Accept-Encoding 信息)侄刽;
2. 如果瀏覽器支持HTTP壓縮指黎,Web服務(wù)器檢查請求文件的后綴名;
3. 如果請求文件是HTML州丹、CSS等靜態(tài)文件醋安,Web服務(wù)器到壓縮緩沖目錄中檢查是否已經(jīng)存在請求文件的最新壓縮文件;
4. 如果請求文件的壓縮文件不存在当叭,Web服務(wù)器向瀏覽器返回未壓縮的請求文件茬故,并在壓縮緩沖目錄中存放請求文件的壓縮文件;
5. 如果請求文件的最新壓縮文件已經(jīng)存在蚁鳖,則直接返回請求文件的壓縮文件磺芭;
6. 如果請求文件是動態(tài)文件,Web服務(wù)器動態(tài)壓縮內(nèi)容并返回瀏覽器醉箕,壓縮內(nèi)容不存放到壓縮緩存目錄中钾腺。
網(wǎng)上許多開啟GZIP的方法徙垫,但是研究了許多才成功了,在這里記錄下面
編輯 http.conf 文件
去掉 #LoadModule headers_module modules/mod_headers.so 前面的注釋#
去掉 #LoadModule deflate_module modules/mod_deflate.so 前面的注釋#
去掉 #LoadModule filter_module modules/mod_filter.so 前面的注釋#
文件末尾加上
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript?application/json #對指定的內(nèi)容進行壓縮放棒,壓縮方式為默認(rèn)的一個方法
詳細(xì)配置:
DeflateCompressionLevel 6
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript application/javascript application/json
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary #設(shè)置不對后綴gif姻报,jpg,jpeg间螟,png的圖片文件進行壓縮
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #同上吴旋,就是設(shè)置不對exe,tgz厢破,gz荣瑟。。摩泪。的文件進行壓縮
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
AddOutputFilterByType DEFLATE text/* #設(shè)置對文件是文本的內(nèi)容進行壓縮笆焰,例如text/html text/css text/plain等
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #這段代碼你只需要了解application/javascript application/x-javascript這段就可以了,這段的意思是對javascript文件進行壓縮
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp #這段是告訴apache對php類型的文件進行壓縮
BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.x 有一些問題见坑,所以只壓縮文件類型是text/html的
BrowserMatch ^Mozilla/4.0[678] no-gzip # Netscape 4.06-4.08 有更多的問題嚷掠,所以不開啟壓縮
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # IE瀏覽器會偽裝成 Netscape ,但是事實上它沒有問題