您好,登錄后才能下訂單哦!
服務(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 壓縮前:
gzip 壓縮后:
那么如何在服務(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)生效了!
免責(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)容。