Brotli壓縮:提升WordPress網站性能的利器
核心要點:
WordPress憑藉易用性、強大的社區支持和可配置性等諸多優勢成為優秀的CMS。然而,WordPress用戶經常面臨的一個難題是網站性能問題。本文將探討Brotli壓縮及其對WordPress性能的影響。
免責聲明:我為KeyCDN工作,此處引用了他們的一些文章和工具。
網上有很多關於“加速WordPress”的文章,它們提供了許多改進網站加載速度的方法,包括使用插件進行優化。然而,自從Google發布了最新的壓縮算法Brotli以來,收集到的數據還不足以確定在WordPress網站上啟用它會帶來什麼樣的性能提升。
在本文中,我們將通過在三種不同場景下測試WordPress性能來衡量Brotli壓縮的效果:
Brotli(以一種瑞士烘焙產品命名)是Google在2015年發布的一種相對較新的壓縮算法。根據Google的說法,Brotli壓縮結合使用了現代LZ77算法變體、霍夫曼編碼和二階上下文建模。
Google使用Brotli壓縮算法進行了各種測試,並將結果與其他現代壓縮算法進行了對比。根據這項研究,Google發現Brotli在壓縮率方面平均比Zopfli(另一種現代壓縮算法)高出20-26%。在性能方面,文件壓縮得越小總是受歡迎的。
Brotli的一個小缺點是它尚未在任何流行的Web服務器上正式發布。這意味著,如果您今天想在服務器上啟用Brotli,則需要進行一些配置工作。以下Brotli性能測試均在運行Nginx的Ubuntu 16.04.2 LTS上進行(需要了解如何使用Nginx?請查看SitePoint高級課程《使用Nginx加速網站》)。下面,我們將逐步介紹如何在相同的操作系統和Web服務器上運行Brotli。
Ubuntu 16.04是第一個允許您使用apt-get安裝Brotli的Ubuntu發行版。為此,只需運行:
<code class="language-bash">$ apt-get update && apt install brotli</code>
完成後,您需要為Brotli壓縮安裝Nginx模塊並編譯最新版本的Nginx(當前版本為1.13.0):
<code class="language-bash">$ apt-get update && apt install brotli</code>
Brotli現在應該已正確安裝在您的服務器上。接下來,您需要配置nginx.conf文件以指定所需的配置指令。以下指令用於這些性能測試;但是,您可以根據需要修改它們。
<code class="language-bash">$ git clone --recursive https://github.com/google/ngx_brotli ngx_brotli $ wget http://nginx.org/download/nginx-1.13.0.tar.gz $ tar zxvf nginx-1.13.0.tar.gz $ cd nginx-1.13.0 $ ./configure --add-module=../ngx_brotli $ make && make install</code>
完整的指令列表可以在Nginx模塊Github頁面上找到。
由於修改了nginx.conf文件,因此最後一步是重新加載Nginx。為此,請運行以下命令:
<code class="language-nginx">brotli on; brotli_comp_level 3; brotli_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;</code>
Brotli現在應該已安裝並配置在您的服務器上。要驗證這一點,您可以選擇兩種方法。
此時,您應該能夠使用Brotli壓縮正確地交付WordPress資源。但是,如果您檢查HTML文檔的請求標頭詳細信息,您可能會注意到content-encoding值仍然為“Gzip”。這是由於WordPress PHP代碼依賴於PHP設置zlib.output_compression
“On”。
不幸的是,目前無法使用WP過濾器更改此設置。但是,隨著Brotli的普及,WordPress可能會引入簡單的修復程序。目前,您需要手動禁用zlib.output_compression,方法是編輯php.ini文件(如果使用PHP 7.0,則位於/etc/php/7.0/fpm/php.ini)。只需將zlib.output_compression設置為Off,然後使用systemctl restart php7.0-fpm.service重新啟動PHP。
現在,在檢查網站的HTML文檔時,您應該能夠看到content-encoding標頭值br。
如上所述,我們的Brotli性能測試是在三種不同的場景下進行的。
Brotli和Gzip壓縮級別均設置為“3”。可以根據您喜歡的文件節省量與壓縮時間來修改壓縮級別。每個測試都使用運行“2017”主題的普通WordPress安裝。默認情況下,此主題加載14個資源並傳輸236KB的數據。
需要注意的是,上述測試網站中的並非所有資源都是可壓縮的。例如,圖像既不會被Gzip壓縮,也不會被Brotli壓縮,任何第三方資源(如字體)也不會被Brotli壓縮。因此,使用Gzip的所有壓縮資源的總大小的基線為84.7KB。為了考慮加載時間的變化,我們對每個頁面都進行了三次硬刷新,併計算了每個測試場景的平均加載時間。這樣,所有資源都將從服務器加載,而不是從瀏覽器緩存加載。
下表概述了加載速度和壓縮資源大小的結果。
WordPress Gzip | WordPress Brotli | WordPress Brotli CDN | |
---|---|---|---|
加载速度 | 780 ms | 690 ms | 630 ms |
压缩大小 | 84.7 KB | 81.7 KB | 81.7 KB |
正如結果所示,兩種Brotli壓縮方法的加載時間都比Gzip快,壓縮大小也更小。儘管頁面大小的差異並不顯著,但請記住,這些測試是在裸機WordPress安裝上進行的。對於那些擁有許多資源的網站,多個資源上的少量節省肯定會累積起來。
此外,出於測試目的,我們將兩種壓縮方法都設置為最高級別,以觀察可壓縮資源大小的差異。結果如下:
儘管在這兩種情況下,將壓縮級別設置為最大可能並非必要(因為壓縮時間長得多),但值得注意的是,Brotli網站的可壓縮資源大小比Gzip網站的可壓縮資源大小小13.2%。
Brotli並非所有瀏覽器都普遍支持,儘管許多流行的瀏覽器目前都支持它(截至2017年5月)。
https://www.php.cn/link/fc5f86251458722c799d1830fa0c2c1f
至於服務器支持,大多數流行的Web服務器都提供官方或社區創建的模塊。如本文的安裝過程所示,Nginx用戶必須安裝擴展程序並使用Brotli支持編譯Nginx。同樣,Apache用戶可以使用mod_brotli模塊來交付Brotli壓縮的內容。
和任何事物一樣,使用Brotli也有其優缺點。以下是一些需要考慮的幾點。
此外,Brotli只能在HTTPS上使用,這既可以看作是優點,也可以看作是缺點。一方面,它正在幫助更多網站從HTTP遷移到HTTPS,從而創建一個更安全的互聯網。另一方面,它為那些想要啟用Brotli但仍在使用HTTP的用戶帶來了更多工作。
如測試結果所示,在WordPress網站上實現Brotli在性能方面非常有益。在源服務器上實現Brotli允許在服務器端進行壓縮,然後在支持Brotli壓縮的CDN上緩存該內容,從而實現更快的資源交付。
儘管Brotli尚未被所有瀏覽器普遍支持,但重要的是要識別訪問者最常使用的瀏覽器,並通過提供更快的加載時間來滿足他們的需求。此外,對於那些使用尚未支持的瀏覽器的用戶,這些瀏覽器只會回退到使用Gzip——雙贏的局面。
Brotli和Gzip都是用於壓縮數據的算法,但它們有一些關鍵區別。由Google開發的Brotli是一種較新的算法,它比Gzip提供更好的壓縮率。這意味著它可以使文件更小,這可以加快網站的加載速度。但是,Brotli不像Gzip那樣得到廣泛支持,因此它可能無法在所有瀏覽器或服務器上運行。
Brotli壓縮通過減小構成網站的文件的大小來工作。這意味著當用戶訪問您的網站時,他們的瀏覽器需要下載的數據更少,這可以加快加載速度。更快的加載速度可以改善用戶體驗,並對網站的SEO產生積極影響。
雖然包括Google Chrome和Firefox在內的許多現代瀏覽器都支持Brotli壓縮,但並非所有瀏覽器都支持它。例如,Internet Explorer不支持Brotli壓縮。因此,在決定是否使用Brotli壓縮時,務必考慮您的受眾及其可能的瀏覽器使用情況。
有幾種可用的在線工具可以測試您的網站是否正在使用Brotli壓縮。這些工具通過向您的網站發送請求,然後分析響應以查看它是否已使用Brotli進行壓縮來工作。
是的,您可以在您的WordPress網站上使用Brotli壓縮。但是,實現Brotli壓縮可能比其他類型的壓縮更複雜,因為它需要修改服務器配置。還有一些插件可以幫助您在WordPress網站上實現Brotli壓縮。
雖然Brotli壓縮可以提高加載時間,但它並非沒有潛在的缺點。首先,它不像其他壓縮方法(如Gzip)那樣得到廣泛支持。這意味著它可能無法在所有瀏覽器或服務器上運行。此外,Brotli壓縮可能比其他方法更消耗資源,這可能會減慢服務器速度。
Brotli壓縮通過查找並刪除數據中的冗餘來工作。它使用常用單詞和短語的字典來將重複數據替換為更短的表示形式,從而減小數據的整體大小。
是的,Brotli壓縮可能會對您的網站SEO產生積極影響。這是因為搜索引擎在對網站進行排名時考慮的因素之一是加載時間。通過減小網站文件的大小,從而提高加載速度,Brotli壓縮可以幫助提高網站的SEO。
Brotli壓縮可以使許多類型的網站受益,特別是那些擁有大量文本數據(如博客或新聞網站)的網站。但是,對於包含大量多媒體內容的網站,它可能不太有益,因為此類內容通常已經過壓縮,並且使用Brotli可能不會看到顯著的尺寸減小。
在服務器上實現Brotli壓縮通常需要修改服務器的配置文件以啟用Brotli壓縮並指定應壓縮的文件類型。確切的過程可能因服務器的操作系統和您使用的Web服務器軟件而異。
以上是測量Brotli壓縮對WordPress的影響的詳細內容。更多資訊請關注PHP中文網其他相關文章!