絕大部分站長(zhǎng)都會(huì)開啟 nginx 的 gzip 壓縮網(wǎng)頁(yè)體積,提升網(wǎng)頁(yè)加載速度,減少帶寬消耗。并且現(xiàn)在大部分的面板安裝 nginx 的時(shí)候,默認(rèn)都會(huì)開啟 gzip 壓縮配置。然而絕大部分站長(zhǎng)可能都沒(méi)注意到這個(gè)配置,也并不會(huì)去修改他。gzip_comp_level 是 2,表示 gzip 的壓縮級(jí)別是 2。即使少部分站長(zhǎng)注意到有這個(gè)配置,但也不知道這個(gè)壓縮比設(shè)置多少是合適的。
- 我的 cpu 夠,直接開啟最大壓縮級(jí)別(9)就行
- 我的帶寬夠,cpu 緊張,壓縮級(jí)別調(diào)小一點(diǎn),稍微壓縮一下就行
- 去網(wǎng)上找一個(gè)最合適的壓縮級(jí)別推薦
或許你的想法就是以上五種的其中之一。然而,這些看似合理的做法,真的能帶來(lái)最佳效果嗎?
為了找到答案,我決定對(duì)不同的壓縮級(jí)別進(jìn)行一次詳盡的測(cè)試,用數(shù)據(jù)說(shuō)話。
我到網(wǎng)上找了一些大小不一的網(wǎng)頁(yè),然后用 python 寫了測(cè)試代碼分別運(yùn)行 1000 次 gzip 壓縮,統(tǒng)計(jì)壓縮比以及壓縮耗時(shí)。
10k 的網(wǎng)頁(yè):
可以看出來(lái),到 5 之后,壓縮比下降就不明顯了。壓縮耗時(shí)在 5 之后上漲就不太明顯了。
20k 的網(wǎng)頁(yè):
到了 6 以上,壓縮率就沒(méi)有什么變化了。壓縮時(shí)間是一直在上漲的。
50k 的網(wǎng)頁(yè):
壓縮率基本在 6 以后下降就不明顯了,但壓縮時(shí)間在 7 以后急劇上升。
90k 的網(wǎng)頁(yè):
看起來(lái)和 50k 的網(wǎng)頁(yè)曲線很相似。其原因是 50k 的網(wǎng)頁(yè)是我從 90k 的網(wǎng)頁(yè)截取一部分得來(lái)的。在壓縮比為 6 之后,壓縮率下降不明顯,然而執(zhí)行耗時(shí)上漲迅速。這個(gè)數(shù)據(jù)也是在 6 以后壓縮率就不明顯了。壓縮耗時(shí)一直上漲。同樣還是在 6 以上壓縮率就下不去了,而壓縮時(shí)間一直隨著壓縮級(jí)別上升而上漲。
從這些測(cè)試數(shù)據(jù)中,可以得出以下結(jié)論:
壓縮級(jí)別越大,壓縮耗時(shí)越長(zhǎng):這對(duì)服務(wù)器CPU會(huì)造成更大負(fù)擔(dān),尤其是在處理大文件或高并發(fā)時(shí)。
壓縮級(jí)別與壓縮效果非簡(jiǎn)單正比:更高級(jí)別的壓縮并不總能顯著減小文件體積,尤其是超過(guò)某個(gè)點(diǎn)后(通常 around level 6),壓縮比的提升會(huì)趨于平緩。
網(wǎng)頁(yè)內(nèi)容和大小影響壓縮效率:不同網(wǎng)頁(yè)的“最佳”壓縮級(jí)別可能因其內(nèi)容和大小而異。
大文件更耗CPU:網(wǎng)頁(yè)越大,高壓縮級(jí)別對(duì)CPU的消耗增加越明顯。大文件(如200k以上)的壓縮耗時(shí)隨級(jí)別增長(zhǎng)甚至呈指數(shù)上升趨勢(shì)。
程序分析的結(jié)果如下
OVERALL RECOMMENDATIONS (Based on P95 values):================================================================================10k.html -> Optimal level: 620k.html -> Optimal level: 650k.html -> Optimal level: 790k.html -> Optimal level: 6200k.html -> Optimal level: 6650k.html -> Optimal level: 51000k.html -> Optimal level: 5
Average optimal level across all files: 6
從這些測(cè)試中,能得到最佳壓縮級(jí)別是 6。然而這個(gè)級(jí)別也會(huì)隨著你的網(wǎng)頁(yè)大小,網(wǎng)頁(yè)內(nèi)容的變化而變化,并不一定都適用。但最佳級(jí)別基本就是 5,6,7這三個(gè)值。基于上面的測(cè)試數(shù)據(jù)我可以給大家?guī)c(diǎn)建議:追求較高壓縮比且服務(wù)器CPU資源充足:可嘗試級(jí)別7。
希望平衡壓縮效果與服務(wù)器負(fù)載,級(jí)別6是穩(wěn)妥的選擇。
服務(wù)器CPU資源緊張或主要壓縮大文件,級(jí)別5也能提供不錯(cuò)的壓縮效果,同時(shí)CPU負(fù)擔(dān)更輕。
現(xiàn)在就快去調(diào)整你的 nginx gzip_comp_level 的值吧!讓你的網(wǎng)站速度更快,帶寬更省!
閱讀原文:原文鏈接
該文章在 2025/8/28 16:42:17 編輯過(guò)