加快WordPress網站速度的最簡單方法是消除所有不需要的資源。加速它的第二種最簡單的方法是壓縮所有需要的資源。在您的 Web 伺服器上啟用 GZIP 壓縮是實現這一目標的最簡單、最有效的方法之一。
預設情況下,所有現代瀏覽器都支援GZIP壓縮。但是,要為您的使用者提供無故障的壓縮資源,您必須正確配置您的伺服器。
在這篇文章中,您將瞭解網路資料壓縮的基礎知識、GZIP壓縮是什麼、它的各種好處,以及如何使用它來加速不同伺服器設定上的WordPress網站。
Web上資料壓縮的基礎知識
網路上的資料壓縮是減少網站傳輸的資料大小的過程。根據資料型別——文字、影象、樣式表、指令碼、字型——有多種壓縮資料的方法。
網頁的主要組成部分
例如,縮小HTML、CSS和JavaScript是一種減少瀏覽器傳送資料量的簡單方法。在這裡,壓縮器通過從原始碼中刪除不必要的字元(例如註釋和空格)來壓縮文字。
在下面的簡單HTML文件示例中,共有三種內容型別:HTML標記、CSS樣式和JavaScript程式碼。
每種內容型別都有獨特的語法和語義。總的來說,這個HTML文件總共有357個字元。
<html> <head> <style> /* wbolt-banner is used on the homepage only */ .wbolt-banner { font-size: 150% } .wbolt-banner { width: 75% } </style> </head> <body> <!-- wbolt banner START --> <div>...</div> <!-- wbolt banner END --> <script> wboltScripts(); // random scripts used on the page </script> </body> </html>
上面的程式碼很容易閱讀和遵循。它非常適合開發。但是,瀏覽器沒有必要閱讀評論並具有完美縮排的標籤。智慧壓縮器可以分析此文件並從中刪除所有不必要的部分。
<html><head><style>.wbolt-banner{font-size:150%;width:75%}</style></head><body><div>...</div><script>wboltScripts();</script></body></html>
縮小後,HTML文件減少到只有141個字元。這節省了60.50% 的字元數。這對眼睛來說並不容易,但這對瀏覽器來說並不重要。它仍然會向使用者顯示相同的頁面。
要利用這兩個版本,您可以將原始文件維護為“開發版本”,但在將其釋出之前縮小所有程式碼。
大多數WordPress效能外掛會自動為您處理這個問題。
未壓縮與縮小jQuery的檔案大小壓縮
例如,jQuery 3.5.1庫的未壓縮版本比同一檔案的縮小版本大3倍以上。
同樣,上述相同的壓縮技術可以優化其他內容型別,如影象、視訊、字型等。像這樣的針對特定內容的縮減是優化網站基於文字的資產大小的第一步。
但是資料壓縮不僅僅是縮小。使用先進的數學技術,資料壓縮演算法可以進一步減少資料的大小。
這種資料壓縮方法最流行的例子之一是GZIP。它實現了高效的資料傳輸,併為使網際網路成為可行的全球通訊媒介做出了重大貢獻。
什麼是GZIP壓縮?
GZIP是GNU Zip的縮寫,是網路上最流行的無損資料壓縮方法。它允許您減小站點的HTML頁面、樣式表和指令碼的大小。
GZIP不僅是一種資料壓縮演算法,也是一種副檔名(.gz)和一種用於檔案壓縮/解壓的軟體。
它基於DEFLATE演算法,它是LZ77編碼和霍夫曼編碼演算法的混合體。
GZIP壓縮基於DEFLATE演算法
GZIP壓縮器獲取一組原始資料並對其進行無失真壓縮。原始資料可以來自任何檔案型別,但GZIP最適用於基於文字的資產(例如HTML、CSS、JS)。
下一節將深入介紹GZIP壓縮的工作原理。
GZIP如何壓縮資料
GZIP壓縮工作原理的粗略說明
首先,GZIP壓縮器對原始資料執行LZ77壓縮演算法以消除冗餘。該演算法通過在預定義的滑動視窗(原始資料的一小部分)中查詢重複模式來工作。
然後用元組替換所有重複的字串以壓縮原始資料。
LZ77編碼演算法示意圖
在上面的例子中,滑動視窗大小隻有13個字元長(13個位元組)。但是,GZIP壓縮可以使用32KB(32,768位元組)的最大滑動視窗大小。滑動視窗的大小對LZ77壓縮效能起著關鍵作用。
用LZ77演算法壓縮原始資料後,GZIP壓縮器再用霍夫曼編碼演算法進一步壓縮。它通過為出現頻率更高的字元分配最少的位數,同時為稀有字元分配最高的位數來實現這一點。
這種技術類似於摩爾斯電碼中使用的技術,其中英語中出現頻率更高的字母得到最短的序列。
要了解霍夫曼編碼演算法的工作原理,請考慮單詞BOOKKEEPER。它有10個字元長,但它只有6個獨特的字元。這個詞很好地混合了單、雙和三字母。
幾乎所有網站都使用UTF-8字元編碼來表示字母和符號。UTF-8中的每個ASCII字元(也包括英文字母)使用1個位元組(8位)。
“BOOKKEEPER”這個詞有很多重複的字母
10個字元的字串如BOOKKEEPER將需要10個位元組(80位)的記憶體。您可以看到它包含1個字母例項B, P, R,2個字母例項O和K,3個字母例項E。
霍夫曼編碼演算法使用這些知識來無失真壓縮字串。它通過生成一個將每個唯一字母作為葉子的二叉樹來實現。
出現頻率最低的字母(例如B、P、R)將位於樹的底部,而那些頻繁出現的字母(例如E、O、K)將理想地位於頂部。
樹中最頂層的節點是root,其值等於字串中的總字元數。
“BOOKKEEPER”這個詞的霍夫曼樹
生成霍夫曼樹後,所有的左分支和右分支箭頭分別被賦予了0和1數字。然後,您可以通過跟蹤從根到葉的路徑並連線所有0和1來為任何字元生成霍夫曼程式碼。
霍夫曼碼是每個字元唯一的二進位制碼
您可以注意到頻率最高的字母具有最小位大小的霍夫曼程式碼。
注意:霍夫曼編碼演算法可以通過對頻率相同的字元使用不同的排序策略來生成替代的二進位制程式碼。但是,編碼字串的總大小將保持不變。
編碼為25位字串的80位字
儲存原始單詞所需的記憶體減少了68.75%。
使用具有0 / 1約定的霍夫曼樹生成滿足字首屬性的二進位制程式碼。它確保任何特定字元的Huffman程式碼不是任何其他字元程式碼的字首,從而可以輕鬆地使用Huffman樹對編碼的字串進行解碼。這對GZIP解壓速度起主要作用。
就像上面的單詞一樣,GZIP壓縮器使用Huffman編碼演算法進一步優化LZ77演算法生成的元組。這會導致具有.gz副檔名的高度壓縮檔案。
如果您有興趣瞭解有關GZIP工作原理的更多資訊,請參閱此視訊以進行快速概述。
GZIP壓縮有多好?
通常,GZIP對小檔案的壓縮率可達70%左右,但對於較大的基於文字的資產,壓縮率可達90%。
一些流行的CSS和JS庫的GZIP壓縮率
在上表中,您可以看到使用GZIP壓縮縮小的檔案可以進一步減小其大小。
注意:您可以使用GZIP壓縮任何檔案型別,但對於已經使用其他方法壓縮的資產(例如影象、視訊),它不會節省任何費用。有時,它甚至可能會增加檔案大小。
壓縮演算法的強度不僅取決於其壓縮率,還取決於它壓縮和解壓縮資料的速度和效率。這就是GZIP在大多數用例中的優勢所在。
由於GZIP使用流演算法快速解壓縮,因此非常適合速度至關重要的Web協議。此外,GZIP使用最少的資源來壓縮和解壓縮資料,使其成為伺服器和客戶端的理想選擇。
brotli vs bzip2 vs GZIP vs xz的壓縮效能(來源:OpenCPU)
上面的圖表比較了brotli、bzip2、gzip和xz壓縮演算法的壓縮效能。GZIP在壓縮比測試中略有下降,但在壓縮和解壓縮速度方面,它完全擊敗了競爭對手。
檢視壓縮速度圖,我們可以得出結論,GZIP非常適合在HTTP伺服器和網路上的其他資料流中進行實時壓縮。考慮到其在推進Web方面的所有積極因素,IETF批准GZIP作為HTTP/1.1中三種壓縮標準格式之一。
注意:許多流行的作業系統(Linux、macOS、iOS)和現代遊戲機(PlayStation 4、Wii U、Xbox One)都使用了GZIP壓縮庫的抽象zlib。它還用於壓縮影象的無損PNG檔案格式。
GZIP壓縮的6大優勢
讓我們仔細看看GZIP壓縮的最重要優勢。
提供不錯的壓縮比
如前所述,與競爭對手相比,GZIP沒有最好的壓縮比。但這也離他們不遠了。通常,它可以幫助您將基於文字的資源的大小減少70-90%。
超快速壓縮和解壓
對於資料壓縮和解壓縮速度,GZIP是明顯的贏家。非常需要在HTTP伺服器和其他資料流中進行動態壓縮。
需要很少的記憶體
GZIP留下最小的記憶體佔用,使其適用於記憶體容量有限的伺服器和系統。因此,您會發現即使是最便宜的網路託管服務提供商也支援它。
即使在最壞的情況下也不會擴充套件太多
像GZIP這樣的無損資料壓縮演算法有一個嚴格的限制,超過這個限制就不能壓縮資料。
通常,當資源已經壓縮得很好,或者資源很小並且新增GZIP字典的開銷高於壓縮節省的開銷時,就會發生這種情況。我們可以將這種現象歸因於一個叫做熵編碼的概念。GZIP對這種效果具有很強的抵抗力。
免費使用和開源
GZIP最初是作為早期Unix系統中使用的專利壓縮程式的免費開源替代品而建立的。因此,它不受任何專利的束縛,任何人都可以自由使用。
享有普遍支援
據W3Techs稱,他們跟蹤的所有網站中有82%使用GZIP壓縮,這使其成為網路上使用最廣泛的壓縮演算法。
幾乎所有的伺服器和客戶端都支援GZIP。無論您在哪個伺服器上託管您的網站,您都可以通過在其上啟用GZIP來加快速度。
網站速度測試工具中的GZIP警告
除了縮小之外,啟用GZIP是您可以在網站上實施的最簡單、最有效的速度優化之一。
這也是優化WordPress的最簡單方法之一。儘管如此,許多WordPress網站仍然不使用它。
當您訪問網站時,您的瀏覽器會通過檢查content-encoding: gzip
響應標頭來檢查Web伺服器是否啟用了GZIP 。如果標頭存在,它會檢索壓縮檔案,解壓縮它們,然後自動為您提供較小的檔案。
Chrome DevTools中的“content-encoding: gzip”響應頭
如果瀏覽器沒有檢測到GZIP響應標頭,它會下載未壓縮的檔案。在大多數情況下,頁面載入速度的差異可能是幾秒鐘。因此,如果您沒有啟用GZIP,您將在網站速度測試工具中看到警告。
Google PageSpeed Insights / Lighthouse中的GZIP警告
當您的網站上沒有啟用任何文字壓縮時,Google PageSpeed Insights會發出警告。
注意: Google PageSpeed Insights和Google Lighthouse是兩個獨立的網站效能測試工具。他們一直獨立工作,直到2018年Google升級PageSpeed Insights以使用Lighthouse作為其分析引擎。因此,PageSpeed Insights和Lighthouse現在是一回事。
Google PageSpeed Insights中的“啟用文字壓縮”警告
在上面的示例站點中,壓縮基於文字的資源可以將頁面重量減少78%以上,並將頁面載入時間加快2.1秒。
注意: PageSpeed Insights依賴於伺服器返回給瀏覽器的響應標頭。有時,即使您啟用了GZIP壓縮,它也可能會顯示錯誤警告。可能是因為在使用中間代理伺服器或安全軟體的機器上執行速度測試。它們可能會干擾從外部伺服器下載壓縮檔案。
GTmetrix中的GZIP警告
如果您的網站不提供基於文字的壓縮資源,GTmetrix會顯示警告。與Google PageSpeed Insights一樣,它還會向您展示您可以實現的潛在節省。
GTmetrix中的“啟用壓縮”警告
注意: GTmetrix正在升級其速度測試演算法,以使用最新的Google Lighthouse指標替換舊的PageSpeed Insights和YSlow庫。您可以預期其GZIP壓縮警告與Lighthouse顯示的警告類似。
Pingdom工具中的GZIP警告
Pingdom Tools會直接警告您使用GZIP壓縮您的網站元件。
Pingdom工具中的“使用GZIP壓縮元件”警告
在描述部分,Pingdom Tools還為您提供了一些關於GZIP重要性的統計資料。
WebPageTest中的GZIP警告
如果WebPageTest檢測到未以最優化的方式提供任何可壓縮響應,則會在其Performance Review選項卡中顯示警告。
WebPageTest中的“使用GZIP壓縮”警告
WebPageTest還將給出分級分數以顯示警告的嚴重程度。例如,它將上述警告評為23分(滿分100分),這意味著您應該優先解決它。
如何檢查GZIP壓縮是否已啟用
在Accept-Encoding: gzip, deflate
HTTP標頭所有現代瀏覽器都有效地支援。因此,大多數Web主機預設在其所有伺服器上啟用GZIP壓縮。
當Web伺服器看到瀏覽器傳送的此標頭時,它們會識別瀏覽器對GZIP的支援,並使用content-encoding: gzip
標頭以壓縮的HTTP響應進行響應。
但是,如果您使用的是其他WordPress託管服務提供商,或者您只是想確認您的網站是否正確提供GZIP壓縮內容,請始終檢查它是否已啟用。
下面是一些檢查GZIP壓縮的簡單方法。
1.線上GZIP壓縮測試工具
使用線上工具是檢查您的網站是否啟用GZIP壓縮的最簡單方法。我建議使用免費的Check GZIP壓縮或HTTP壓縮測試工具。只需輸入您的網站URL並點選“Check”或“Test”按鈕。
這兩個線上工具都會向您顯示關於是否啟用GZIP的簡要報告,以及您通過在啟用GZIP壓縮的情況下提供測試URL已儲存(或可能儲存)的資料傳輸量。
第一個工具還會向您顯示其他相關資訊,例如您網站的伺服器型別、內容型別和壓縮時間。
使用Check GZIP壓縮工具測試wbolt.com的主頁
使用HTTP壓縮測試工具測試wbolt.com
您應該注意到GZIP優化不僅僅停留在您的網頁上,還包括其基於靜態文字的資源,如樣式表、指令碼和字型。如果您使用CDN來為這些資產提供服務,那麼您需要確保CDN也為它們提供啟用GZIP壓縮的服務。
大多數現代CDN(例如Cloudflare、KeyCDN和CloudFront)都支援GZIP壓縮。您可以通過直接連結到資產來測試CDN服務的資產以進行GZIP壓縮。
由CDN託管的資產的GZIP壓縮測試
在上面的報告中,可以看到Kinsta CDN使用的是KeyCDN引擎,這是一種傳統的拉式CDN。
2. “content-encoding: gzip” HTTP響應頭
驗證網站是否提供GZIP壓縮內容的第二種方法是驗證content-encoding: gzip
HTTP響應標頭。
您可以開啟Chrome DevTools或Firefox Developer Tools,然後在Network部分下查詢此響應標頭。
我之前已經在Chrome DevTools中展示過它的外觀。這是它在Firefox開發者工具中的外觀。
Firefox開發者工具中的“content-encoding: gzip”標頭
您還可以在Chrome DevTools設定面板中啟用“Use large request rows”選項以檢視頁面的原始大小和壓縮大小。如下所示,原始頁面的大小在使用GZIP壓縮後從118KB減少到僅22.9KB。
在Chrome Devtools中檢視壓縮和未壓縮的頁面大小
3. 網頁速度測試工具
大多數網站速度測試工具會警告您不要使用GZIP之類的壓縮來服務您的網頁。許多閱讀本文的讀者可能正是因為這些GZIP警告,其中許多我已經在上面進行了深入討論。
各種網頁速度測試工具中的GZIP警告
您可以使用PageSPEed Insights、GTmetrix、Pingdom Tools和WebPageTest等測速工具來檢查您的WordPress網站是否啟用了GZIP壓縮。
如何啟用GZIP壓縮
如果您的Web伺服器上沒有啟用GZIP壓縮,則有很多方法可以啟用它。確切的方法取決於您用於託管網站的Web伺服器。
重要提示:與往常一樣,在編輯站點和伺服器配置檔案之前對其進行備份。
使用WordPress外掛啟用GZIP
在WordPress站點上啟用GZIP壓縮的最簡單方法是使用快取或效能優化外掛。
例如,如果您在Apache Web伺服器上託管您的WordPress站點,W3 Total Cache包含一個選項,可在其瀏覽器快取設定面板下啟用GZIP壓縮。
同樣,WP Rocket允許您自動新增GZIP壓縮規則。這些外掛通過將Apache的mod_deflate
模組新增到.htaccess檔案來啟用GZIP壓縮。
在W3 Total Cache中啟用GZIP壓縮
WordPress外掛需要修改Web伺服器上的檔案的許可權。如果他們沒有正確的許可權,那麼他們將失敗或向您顯示錯誤。
在這種情況下,您需要聯絡您的託管服務提供商或使用下面的程式碼片段手動修改您的Web伺服器的配置檔案。
在Apache Web伺服器上啟用GZIP
據Netcraft稱,Apache服務的活躍站點比當今使用的任何其他Web伺服器都多。它也是WordPress推薦的兩個Web伺服器之一。
要在Apache伺服器上啟用GZIP壓縮,您需要使用它的mod_filter
和mod_deflate
模組並使用正確的指令正確配置它們。他們將指示Apache壓縮伺服器輸出,然後再通過網路將其傳送給客戶端。
您有兩個選項可以根據您擁有的訪問級別來編輯Apache的伺服器配置:
- 如果您可以訪問主伺服器配置檔案(通常稱為httpd.conf),建議您使用它來配置Apache,因為.htaccess檔案會降低Apache的速度。
- 如果您無法訪問主伺服器配置檔案(大多數WordPress共享主機提供商通常都是這種情況),那麼您需要使用.htaccess檔案配置Apache 。
第一個選項嚴格用於sysadmins,因為託管服務提供商很少允許您編輯主伺服器配置檔案。以這種方式解釋如何做到這一點超出了本文的範圍。您可以參考HTML5 Boilerplate專案和Apache文件共享的示例Apache伺服器配置以開始使用。
第二個選項非常適合大多數WordPress網站所有者,因為許多共享主機提供商允許您編輯.htaccess檔案。
首先,使用SFTP或主機的線上檔案管理器在WordPress站點的根目錄中查詢.htaccess檔案。然後將下面的程式碼片段新增到它。
重要提示:確保該mod_filter
模組在您的伺服器上處於開啟狀態。大多數網路主機預設啟用它,但如果不是,該AddOutputFilterByType
指令將不起作用並可能引發HTTP 500錯誤。如果在新增下面的程式碼片段後有任何問題,您可以檢查伺服器的錯誤日誌。
<IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Remove browser bugs (only needed for ancient browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule>
僅在.htaccess檔案的現有指令之後新增上面的程式碼。儲存檔案,然後檢查它是否在您的伺服器上啟用了GZIP壓縮。
啟用GZIP壓縮後的Apache .htaccess檔案示例
您的Web伺服器現在應該為上面列出的所有副檔名提供壓縮檔案。您可以使用前面提到的任何方法來確認這一點。
如果您想確保客戶端的代理和安全軟體不會干擾GZIP壓縮,您可以將上面的程式碼片段替換為下面的程式碼片段。
<IfModule mod_deflate.c> # force compression for clients that mangle 'Accept-Encoding' request headers <IfModule mod_setenvif.c> <IfModule mod_headers.c> SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding </IfModule> </IfModule> # compress all output with one of the following file extensions <IfModule mod_filter.c> AddOutputFilterByType DEFLATE "application/atom+xml" \ "application/javascript" \ "application/json" \ "application/ld+json" \ "application/manifest+json" \ "application/rdf+xml" \ "application/rss+xml" \ "application/schema+json" \ "application/geo+json" \ "application/vnd.ms-fontobject" \ "application/wasm" \ "application/x-font-ttf" \ "application/x-javascript" \ "application/x-web-app-manifest+json" \ "application/xhtml+xml" \ "application/xml" \ "font/eot" \ "font/opentype" \ "font/otf" \ "font/ttf" \ "image/bmp" \ "image/svg+xml" \ "image/vnd.microsoft.icon" \ "text/cache-manifest" \ "text/calendar" \ "text/css" \ "text/html" \ "text/javascript" \ "text/plain" \ "text/markdown" \ "text/vcard" \ "text/vnd.rim.location.xloc" \ "text/vtt" \ "text/x-component" \ "text/x-cross-domain-policy" \ "text/xml" </IfModule> # define and map media types to their appropriate encoding type # Using SVG format (Scalable Vector Graphics) is highly recommended to # load logos, icons, text, and simple images. You can compress .SVG files # further using GZIP to create .SVGZ files. However, most browsers don’t # know that they need to decompress them first if they’re not served # without an appropriate ‘content-encoding’ HTTP response header. Thus, # these images wouldn’t show up in the browser. Hence, this module. <IfModule mod_mime.c> AddType image/svg+xml svg svgz AddEncoding gzip svgz </IfModule> </IfModule>
您可以通過轉到其程式碼儲存庫並關注其中連結的所有資源,瞭解有關此處使用的所有指令的更多資訊。
在Nginx Web伺服器上啟用GZIP
根據Netcraft,Nginx是面向Web的計算機最常用的Web伺服器。如果當前的趨勢繼續下去,它將很快超過Apache,成為活躍站點使用最多的Web伺服器。
您可以使用ngx_http_gzip_module中定義的指令在Nginx Web伺服器上啟用GZIP壓縮。
首先,將下面給出的指令新增到您的nginx.conf檔案中。通常,您可以在伺服器的/etc/nginx/nginx.conf
位置找到此檔案。
# enables GZIP compression gzip on; # compression level (1-9) # 6 is a good compromise between CPU usage and file size gzip_comp_level 6; # minimum file size limit in bytes to avoid negative compression outcomes gzip_min_length 256; # compress data for clients connecting via proxies gzip_proxied any; # directs proxies to cache both the regular and GZIP versions of an asset gzip_vary on; # disables GZIP compression for ancient browsers that don't support it gzip_disable "msie6"; # compress outputs labeled with the following file extensions or MIME-types # text/html MIME-type is enabled by default and need not be included 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 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;
如果您的站點提供大型JS和CSS檔案,那麼您可以通過將以下指令新增到nginx.conf檔案來增加用於壓縮的緩衝區大小:
# sets the 'number' and 'size' of buffers for GZIP compression # default buffer size is 4K or 8K depending on the platform gzip_buffers 16 8k;
儲存nginx.conf檔案後不要忘記重新載入Nginx 。
sudo service nginx reload
最後,您應該測試一下您的伺服器是否啟用了GZIP壓縮。您可以參考Nginx文件以獲取所有ngx_http_gzip_module
指令的最新列表。
在IIS Web伺服器上啟用GZIP
Microsoft的Internet資訊服務 (IIS) 是當今使用的第三大流行Web伺服器。IIS主要部署在執行在Windows上的企業環境中,特別是用於設定公司特定的內網和外網伺服器。
由於各種相容性問題,它很少用於託管WordPress網站。
但是,如果您發現自己處於需要在IIS上啟用GZIP壓縮的罕見情況之一,則可以參考Microsoft的文件以開始使用。您可能還會發現此Stack Overflow thread很有幫助。
GZIP壓縮的替代方案
網路上的資料壓縮世界一直在進步。隨著平均頁面重量大小的不斷增加,網路技術也在努力追趕它,以提高通過網路傳輸資料的效率。
頁面體積大小隨時間增加(來源:HTTPArchive)
在過去幾年中,一種新的壓縮演算法廣受歡迎:Brotli。壓縮WOFF2 Web字型最初是Brotli的主要關注點,但後來擴充套件到支援對任何型別的資料進行壓縮。
Brotli比GZIP更好地壓縮資料,但它需要更多的時間和資源來壓縮資料。但是,它的解壓時間與GZIP相當,雖然它仍然有點慢。
Brotli支援各種瀏覽器
今天大多數瀏覽器都支援Brotli,但在WordPress網站上使用它仍然有些複雜。您必須通過支援Brotli或允許您安裝Brotli庫的託管服務提供商託管您的站點。大多數託管的WordPress主機尚不完全支援它,但如果您使用Cloudflare或KeyCDN等CDN ,則可以輕鬆啟用它。
Brotli顯示出壓縮靜態資產的巨大潛力。Akamai發表了一篇比較Brotli與GZIP的詳細文章。您可以檢視它以瞭解有關Brotli的更多資訊。
小結
一個優化良好的網路對每個人都有好處。使用者喜歡更快速的網站,網站所有者喜歡降低的託管費用,網路主機喜歡在他們的伺服器上實現的優化。GZIP等壓縮技術是加快訪問者頁面載入時間的最佳方法之一。
WordPress網站所有者可以通過啟用GZIP壓縮立即加速他們的網站。對於其他伺服器,本文也介紹了在各種Web伺服器上啟用GZIP壓縮的多種方法。
速度對於任何網站都至關重要。壓縮就對了!
評論留言