Nginx啟用gzip很簡單,只需要設置一下配置文件即可完成,可以參考文章Nginx如何配置Gzip壓縮功能。不過,在群里常有人提到,他們的網站Gzip壓縮雖然成功了,但檢測到JS仍然沒有壓縮成功,這是為什么呢?經過我的檢查發現,原來是他們的gzip_types設置不對造成的,本文就為遇到同樣情況的人解決這一問題。
Nginx啟用Gzip壓縮js無效
某群友在群里提到,他啟用了網站的Gzip壓縮,通過站長工具Gzip壓縮檢測檢測到啟用成功了,想着其他文件如CSS、JS等也都壓縮成功了,但是通過進一步檢測各種類型的壓縮情況,發現JS文件並沒有啟用Gzip壓縮,這令他非常納悶,不知何故。

圖1:Nginx啟用Gzip壓縮js無效
根據經驗,我認為可能原因是他的配置文件里gzip_types的內容沒有寫對,於是問他gzip_types的內容是什么,他說是這樣設置的:

圖2:gzip_types的配置
我仔細看了他的gzip_types的內容,再看圖1中的Header信息,發現Content-Type項的“application/javascript”並沒有出現在他的gzip_types內容里,於是我叫他把“application/javascript”寫到他的gzip_types里,他按照我的要求做了后,再檢測一下,js文件的gzip壓縮終於啟用成功了。

圖3:Nginx啟用Gzip壓縮js成功
經驗
上述案例是該群友沒有在gzip_types里加入“application/javascript”而導致其JS文件沒有壓縮成功,但是經發現,某些群友即使加入了“application/javascript”也同樣出現JS文件沒有壓縮成功的狀況,這是為什么呢?原來,各網站的JS類型“content-type”內容不盡相同,Nginx配置gzip是要把各種類型文件的“content-type”內容加進去才行,不加進去就不能被壓縮。
所以,當發現Nginx壓縮JS沒有成功時,可先查看網站JS的Header信息,如圖1那樣檢測(地址:http://pagespeed.webkaka.com/youhua/gzip/),便可獲得js文件的“content-type”內容。獲得其“content-type”內容,再看看配置文件的gzip_types里有沒有此項內容,如果沒有,加入去即可解決問題。
一鍵檢測網站各類型文件是否啟用gzip
值得注意的問題是,網站啟用了Gzip壓縮並不等於各類型文件都啟用了Gzip壓縮,這與設置是否得當有關。不過如果需要你一個個文件的輸入去檢測,那未免有點繁瑣。為此,卡卡網可以幫助你解決這一煩惱,一鍵檢測網站各類型文件是否啟用gzip壓縮。檢測地址是http://pagespeed.webkaka.com/,檢測結果看下圖:

圖4:一鍵檢測網站各類型文件是否啟用gzip
