溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在 apache 中開啟 gzip 壓縮服務(wù)

發(fā)布時(shí)間:2020-06-14 02:03:37 來(lái)源:網(wǎng)絡(luò) 閱讀:256 作者:劉元興 欄目:網(wǎng)絡(luò)安全

服務(wù)器設(shè)置 gzip 壓縮是 web 開發(fā)里很普遍的做法。假設(shè)你要請(qǐng)求一個(gè) 100k 的文件,網(wǎng)絡(luò)傳輸速度為 50k/s,需要 2s 才能得到數(shù)據(jù),但是如果在服務(wù)器設(shè)置了 gzip 壓縮,將服務(wù)端的文件壓縮到了 50k(實(shí)際上的壓縮率往往小于 50%),這時(shí)候只需 1s 就能得到數(shù)據(jù),然后在客戶端解壓即可。

可以對(duì)比下同一個(gè)文件在開啟 gzip 前后的大小。

gzip 壓縮前

如何在 apache 中開啟 gzip 壓縮服務(wù)

gzip 壓縮后

如何在 apache 中開啟 gzip 壓縮服務(wù)

那么如何在服務(wù)端開啟 gzip 服務(wù)呢?這里以 apache 為例簡(jiǎn)單介紹下。

打開 apache 的 "httpd.conf" 文件,比如我的是在 "C:\wamp\bin\apache\Apache2.2.21\conf" 目錄下。找到以下這一行,將它前面的注釋(#)去掉:

復(fù)制代碼LoadModule deflate_module modules/mod_deflate.so

很多參考文件都提到同時(shí)要對(duì) LoadModule headers_module modules/mod_headers.so 去掉注釋,說(shuō) "如果不開啟這個(gè),那網(wǎng)站就不能正常顯示了" ,不過(guò)我在測(cè)試過(guò)程中沒(méi)有去掉也沒(méi)有問(wèn)題。

接著再添上以下代碼:

復(fù)制代碼<IfModule mod_deflate.c>
# 告訴 apache 對(duì)傳輸?shù)綖g覽器的內(nèi)容進(jìn)行壓縮
SetOutputFilter DEFLATE
# 壓縮等級(jí) 9
DeflateCompressionLevel 9
</IfModule>

這樣就能對(duì)所有文件進(jìn)行 gzip 壓縮了。壓縮等級(jí)是個(gè) 1-9 之間的整數(shù),取值范圍在 1(最低) 到 9(最高)之間,不建議設(shè)置太高,雖然有很高的壓縮率,但是占用更多的CPU資源。(本地測(cè)試了下 1 和 9 壓縮率差不了多少...)

實(shí)際開發(fā)中我們并不需要對(duì)所有文件進(jìn)行壓縮,比如我們無(wú)需對(duì)圖片文件進(jìn)行 gzip 壓縮,因?yàn)閳D片文件(一般為 jpg、png等格式)本身已經(jīng)壓縮過(guò)了,再進(jìn)行 gzip 壓縮可能會(huì)適得其反(詳見(jiàn) 圖片要啟用gzip壓縮嗎?絕對(duì)不要!,背景圖片千萬(wàn)不要gzip壓縮,尤其是PNG),類似的還有 PDF 以及音樂(lè)文件。所以我們可以設(shè)置過(guò)濾指定文件或者對(duì)指定文件進(jìn)行壓縮。

比如我們要對(duì)圖片等特殊文件不進(jìn)行 gzip 壓縮處理:

復(fù)制代碼<IfModule mod_deflate.c>
# 告訴 apache 對(duì)傳輸?shù)綖g覽器的內(nèi)容進(jìn)行壓縮
SetOutputFilter DEFLATE
# 壓縮等級(jí) 9
DeflateCompressionLevel 9
#設(shè)置不對(duì)后綴gif,jpg,jpeg,png的圖片文件進(jìn)行壓縮
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
</IfModule>

或者指定文件格式進(jìn)行壓縮:

復(fù)制代碼<IfModule mod_deflate.c>
# 壓縮等級(jí) 9
DeflateCompressionLevel 9
# 壓縮類型 html、xml、php、css、js
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
AddOutputFilter DEFLATE js css
</IfModule>

修改好后,保存 httpd.conf 文件,記得重啟 apache,再刷新瀏覽器看請(qǐng)求,應(yīng)該已經(jīng)生效了!


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI