伺服器設定 gzip 壓縮是 web 開發裡很普遍的做法。假設你要請求乙個 100k 的檔案,網路傳輸速度為 50k/s,需要 2s 才能得到資料,但是如果在伺服器設定了 gzip 壓縮,將服務端的檔案壓縮到了 50k(實際上的壓縮率往往小於 50%),這時候只需 1s 就能得到資料,然後在客戶端解壓即可。
可以對比下同乙個檔案在開啟 gzip 前後的大小。
gzip 壓縮前:
gzip 壓縮後:
那麼如何在服務端開啟 gzip 服務呢?這裡以 apache 為例簡單介紹下。
開啟 apache 的 "httpd.conf" 檔案,比如我的是在 "c:\wamp\bin\apache\apache2.2.21\conf" 目錄下。找到以下這一行,將它前面的注釋(#)去掉:
loadmodule deflate_module modules/mod_deflate.so
很多參考檔案都提到同時要對loadmodule headers_module modules/mod_headers.so
去掉注釋,說 "如果不開啟這個,那**就不能正常顯示了" ,不過我在測試過程中沒有去掉也沒有問題。
接著再添上以下**:
# 告訴 apache 對傳輸到瀏覽器的內容進行壓縮
setoutputfilter deflate
# 壓縮等級 9
deflatecompressionlevel 9
這樣就能對所有檔案進行 gzip 壓縮了。壓縮等級是個 1-9 之間的整數,取值範圍在 1(最低) 到 9(最高)之間,不建議設定太高,雖然有很高的壓縮率,但是占用更多的cpu資源。(本地測試了下 1 和 9 壓縮率差不了多少...)
實際開發中我們並不需要對所有檔案進行壓縮,比如我們無需對檔案進行 gzip 壓縮,因為檔案(一般為 jpg、png等格式)本身已經壓縮過了,再進行 gzip 壓縮可能會適得其反(詳見 要啟用gzip壓縮嗎?絕對不要!,背景千萬不要gzip壓縮,尤其是png),類似的還有 pdf 以及**檔案。所以我們可以設定過濾指定檔案或者對指定檔案進行壓縮。
# 告訴 apache 對傳輸到瀏覽器的內容進行壓縮
setoutputfilter deflate
# 壓縮等級 9
deflatecompressionlevel 9
#設定不對字尾gif,jpg,jpeg,png的檔案進行壓縮
setenvifnocase request_uri .(?:gif|jpe?g|png)$ no-gzip dont-vary
或者指定檔案格式進行壓縮:
# 壓縮等級 9
deflatecompressionlevel 9
# 壓縮型別 html、xml、php、css、js
addoutputfilter deflate js css
修改好後,儲存 httpd.conf 檔案,記得重啟 apache,再重新整理瀏覽器看請求,應該已經生效了! 如何在Apache中開啟虛擬主機
首先在apache的安裝目錄下的conf extra httpd vhosts.conf中新增如下 虛擬主機埠號 serveradmin 1778023831 qq.com 伺服器管理員郵箱 documentroot e phpworkj think public index.php 虛擬主機需要對...
如何在 apache 中開啟 gzip 壓縮服務
伺服器設定 gzip 壓縮是 web 開發裡很普遍的做法。假設你要請求乙個 100k 的檔案,網路傳輸速度為 50k s,需要 2s 才能得到資料,但是如果在伺服器設定了 gzip 壓縮,將服務端的檔案壓縮到了 50k 實際上的壓縮率往往小於 50 這時候只需 1s 就能得到資料,然後在客戶端解壓即...
如何在 apache 中開啟 gzip 壓縮服務
伺服器設定 gzip 壓縮是 web 開發裡很普遍的做法。假設你要請求乙個 100k 的檔案,網路傳輸速度為 50k s,需要 2s 才能得到資料,但是如果在伺服器設定了 gzip 壓縮,將服務端的檔案壓縮到了 50k 實際上的壓縮率往往小於 50 這時候只需 1s 就能得到資料,然後在客戶端解壓即...