以前一直誤會 gzip_types
可以使用 wildcrad *
來表示:
gzip on; gzip_types text/* ;
事實上,上面的表達方式 Nginx 不吃,必須一條一條詳細列出來。
目前在 h5bp/server-configs-nginx 的建議中,建議需要 gzip 的設定如下:
gzip_types application/atom+xml application/geo+json application/javascript application/x-javascript application/json application/ld+json application/manifest+json application/rdf+xml application/rss+xml application/vnd.ms-fontobject application/wasm application/x-web-app-manifest+json application/xhtml+xml application/xml font/eot font/otf font/ttf image/bmp image/svg+xml image/vnd.microsoft.icon image/x-icon text/cache-manifest text/calendar text/css text/javascript text/markdown text/plain text/xml text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
另外,Chrome dev tool 要檢查檔案是否有壓縮,需要將滑鼠游標移動到檔案的 size 欄位,等到提示訊息出現時,比較 transfer size 和 resource size:
若沒有 dev tool 的話,可以考慮參考 StackOverflow 這篇用 curl 比較 transfer / resource size:
curl --silent --write-out "%{size_download}\n" --output /dev/null https://my.domain/index.html curl --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null https://my.domain/index.html
若 Nginx 有正確做壓縮的話,二次顯示出來的 size 會不一樣,且第二個數值應該要比較小。