在 Nginx 上啟用 gzip 縮短網站資源傳輸時間

網站上常見的資源,像是 HTML、CSS、JacaScript、JSON 等等,其實都是文字組成的,而文字壓縮以後大小可以縮小到剩下 10% 左右,因此有些人主張先將圖片轉成 data URI 在用 gzip 壓縮。

Nginx 可以在遇到特定類型的檔案內容時,啟用 gzip 壓縮後再傳輸資料,透過這個方法來加快傳輸速度:

server {
    ....

    gzip on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";   # 排除不支援的瀏覽器
}

再來要注意,不是所有類型的檔案壓縮以後檔案會變小,像是圖片、影片就不適合使用 gzip 壓縮。這邊新增 MIME type 類型,讓 Nginx 只壓縮真正有效的檔案類型:

  • HTML
  • CSS
  • JavaScript
  • plain text
  • xml
  • Java
  • JSON

所以用 gzip_types 來更新一下 Nginx 的設定檔:

server {
    gzip on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_types text/x-component text/css application/x-javascript application/javascript text/javascript text/x-js text/richtext text/plain text/xml;
}

另外有個注意事項,gzip 可以調整壓縮等級:使用較高的的壓縮率,可以讓檔案盡可能的縮小,但壓縮會花掉較多的時間;使用較低的壓縮率,檔案大小只會縮小一點點,但是只需要一瞬間的時間。所以這個參數就要取決於網站的特性、主機的硬體配備來調整。比較中庸的設定如下:

server {
    gzip on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_types text/x-component text/css application/x-javascript application/javascript text/javascript text/x-js text/richtext text/plain text/xml;
    gzip_comp_level 6;  # from 0 to 9
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Exit mobile version