Nginx啟用gzip很簡單,只需要設(shè)置一下配置文件即可完成,可以參考文章Nginx如何配置Gzip壓縮功能。不過,在群里常有人提到,他們的網(wǎng)站Gzip壓縮雖然成功了,但檢測到JS仍然沒有壓縮成功,這是為什么呢?經(jīng)過我的檢查發(fā)現(xiàn),原來是他們的gzip_types設(shè)置不對造成的,本文就為遇到同樣情況的人解決這一問題。
Nginx啟用Gzip壓縮js無效
某群友在群里提到,他啟用了網(wǎng)站的Gzip壓縮,通過站長工具Gzip壓縮檢測檢測到啟用成功了,想著其他文件如CSS、JS等也都壓縮成功了,但是通過進(jìn)一步檢測各種類型的壓縮情況,發(fā)現(xiàn)JS文件并沒有啟用Gzip壓縮,這令他非常納悶,不知何故。
圖1:Nginx啟用Gzip壓縮js無效
根據(jù)經(jīng)驗(yàn),我認(rèn)為可能原因是他的配置文件里gzip_types的內(nèi)容沒有寫對,于是問他gzip_types的內(nèi)容是什么,他說是這樣設(shè)置的:
圖2:gzip_types的配置
我仔細(xì)看了他的gzip_types的內(nèi)容,再看圖1中的Header信息,發(fā)現(xiàn)Content-Type項(xiàng)的“application/javascript”并沒有出現(xiàn)在他的gzip_types內(nèi)容里,于是我叫他把“application/javascript”寫到他的gzip_types里,他按照我的要求做了后,再檢測一下,js文件的gzip壓縮終于啟用成功了。
圖3:Nginx啟用Gzip壓縮js成功
經(jīng)驗(yàn)
上述案例是該群友沒有在gzip_types里加入“application/javascript”而導(dǎo)致其JS文件沒有壓縮成功,但是經(jīng)發(fā)現(xiàn),某些群友即使加入了“application/javascript”也同樣出現(xiàn)JS文件沒有壓縮成功的狀況,這是為什么呢?原來,各網(wǎng)站的JS類型“content-type”內(nèi)容不盡相同,Nginx配置gzip是要把各種類型文件的“content-type”內(nèi)容加進(jìn)去才行,不加進(jìn)去就不能被壓縮。
所以,當(dāng)發(fā)現(xiàn)Nginx壓縮JS沒有成功時,可先查看網(wǎng)站JS的Header信息,如圖1那樣檢測(地址:http://pagespeed.webkaka.com/youhua/gzip/),便可獲得js文件的“content-type”內(nèi)容。獲得其“content-type”內(nèi)容,再看看配置文件的gzip_types里有沒有此項(xiàng)內(nèi)容,如果沒有,加入去即可解決問題。
一鍵檢測網(wǎng)站各類型文件是否啟用gzip
值得注意的問題是,網(wǎng)站啟用了Gzip壓縮并不等于各類型文件都啟用了Gzip壓縮,這與設(shè)置是否得當(dāng)有關(guān)。不過如果需要你一個個文件的輸入去檢測,那未免有點(diǎn)繁瑣。為此,卡卡網(wǎng)可以幫助你解決這一煩惱,一鍵檢測網(wǎng)站各類型文件是否啟用gzip壓縮。檢測地址是http://pagespeed.webkaka.com/,檢測結(jié)果看下圖:
圖4:一鍵檢測網(wǎng)站各類型文件是否啟用gzip