HTTP 之 檔案壓縮

weixin_33716557發表於2017-10-05

http伺服器上要對檔案進行壓縮,需要載入mod_deflate模組

使用mod_deflate模組壓縮頁面優化傳輸速度,壓縮會對伺服器造成負擔,消耗CPU,但是生產中一般是要啟用壓縮模組,因為生產中是用流量算錢的,但是這邊要兼顧伺服器效能

可以指定壓縮比,1--9,9最高,預設是9,傳送到客戶端前壓縮,壓縮是成對出現,伺服器和客戶端都要支援

.適用場景:

(1)節約頻寬,額外消耗CPU;同時,可能有些較老瀏覽器不支援

(2)壓縮適於壓縮的資源,例如文字檔案

模組:deflate_module,配置如下

LoadModule deflate_modulemodules/mod_deflate.so

例子一

vim /etc/httpd/conf.d/deflat.conf

# Insert filter

SetOutputFilter DEFLATE

# Netscape 4.x has someproblems...

BrowserMatch ^Mozilla/4gzip-only-text/html

#對瀏覽器Netscape 4.x(Mozilla/4)只壓縮text/html這個格式的檔案

# Netscape 4.06-4.08have some more problems

BrowserMatch^Mozilla/4\.0[678] no-gzip

##對瀏覽器Netscape 4.06-4.08這三個版本的所有檔案都不壓縮

# MSIE masquerades asNetscape, but it is fine

BrowserMatch \bMSIE!no-gzip !gzip-only-text/html

#對IE瀏覽器壓縮檔案格式text/html,注意no前面加一個!符號表示雙重取反,如果使用者代理首部匹配字串“MSIE”(“B”為單詞邊界”),就關閉之前定義的限制,支援壓縮

# Don't compress images

SetEnvIfNoCaseRequest_URI \

\.(?:gif|jpe?g|png)$no-gzip dont-vary

#如果請求的檔案格式是?:gif|jpe?g|png就不壓縮,因為?:gif|jpe?g|png這些格式的檔案預設上傳到伺服器都是進行壓縮過的,所以伺服器不再對這些格式的檔案進行壓縮,降低對CPU的負擔

# Make sure proxiesdon't deliver the wrong content

Header append VaryUser-Agent env=!dont-vary

例子二

在子配置檔案中啟用模組的功能,指定對哪種型別的檔案進行壓縮,以下的例子定義對多種格式的檔案進行壓縮,實際配置只需要指定伺服器上存放檔案的格式即可

vim /etc/httpd/conf.d/deflat.conf

SetOutputFilter DEFLATE

#以上語句是啟用壓縮

DeflateCompressionLevel8

#預設是9,最高壓縮比,這裡重新定義壓縮比為8

# Restrict compression to these MIMEtypes

#指定要壓縮的型別

AddOutputFilterByType DEFLATEtext/plain

AddOutputFilterByType DEFLATEtext/html

AddOutputFilterByType DEFLATEapplication/xhtml+xml

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATEapplication/xml

AddOutputFilterByType DEFLATEapplication/x-javascript

AddOutputFilterByType DEFLATEtext/javascript

AddOutputFilterByType DEFLATEtext/css

重啟伺服器後進行測試

1.方法一,開啟瀏覽器除錯模式,獲取伺服器上的資源,如輸入http://172.18.50.63/fs檢視響應頭部

Content-Encoding:gzip和ContenLength:382,跟檔案實際大小對比,確實是被壓縮了

2.通過curl來檢視對比,命令curl --compress -Ihttp://172.18.50.63/fs,同樣有兩個欄位Content-Encoding:

gzip和Content-Length:382

相關文章