關於伺服器效能優化
可以對比下同一個檔案在開啟 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 以及音樂檔案。所以我們可以設定過濾指定檔案或者對指定檔案進行壓縮。
比如我們要對圖片等特殊檔案不進行 gzip 壓縮處理:
複製程式碼
告訴 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
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php AddOutputFilter DEFLATE js css 修改好後,儲存 httpd.conf 檔案,記得重啟 apache,再重新整理瀏覽器看請求,應該已經生效了!