首頁 >CMS教程 >&#&按 >測量Brotli壓縮對WordPress的影響

測量Brotli壓縮對WordPress的影響

Christopher Nolan
Christopher Nolan原創
2025-02-10 08:38:09798瀏覽

Brotli壓縮:提升WordPress網站性能的利器

核心要點:

  • Google推出的新型壓縮算法Brotli能顯著提升WordPress網站性能,方法是減小文件大小,加快加載速度。
  • 在服務器上安裝和配置Brotli可能比較複雜,因為它尚未在流行的Web服務器上正式發布,需要手動配置才能與WordPress完全集成。
  • Brotli的壓縮率比另一種現代壓縮算法Gzip高出20-26%,從而產生更小的文件和更快的加載速度。
  • 儘管Brotli有很多優點,但並非所有瀏覽器都支持它,而且只能在HTTPS上使用,這可能會給一些用戶帶來採用上的挑戰。

WordPress憑藉易用性、強大的社區支持和可配置性等諸多優勢成為優秀的CMS。然而,WordPress用戶經常面臨的一個難題是網站性能問題。本文將探討Brotli壓縮及其對WordPress性能的影響。

免責聲明:我為KeyCDN工作,此處引用了他們的一些文章和工具。

網上有很多關於“加速WordPress”的文章,它們提供了許多改進網站加載速度的方法,包括使用插件進行優化。然而,自從Google發布了最新的壓縮算法Brotli以來,收集到的數據還不足以確定在WordPress網站上啟用它會帶來什麼樣的性能提升。

在本文中,我們將通過在三種不同場景下測試WordPress性能來衡量Brotli壓縮的效果:

  1. 啟用Gzip的WordPress
  2. 啟用Brotli的WordPress
  3. 啟用Brotli 支持Brotli的CDN的WordPress

什麼是Brotli壓縮?

Brotli(以一種瑞士烘焙產品命名)是Google在2015年發布的一種相對較新的壓縮算法。根據Google的說法,Brotli壓縮結合使用了現代LZ77算法變體、霍夫曼編碼和二階上下文建模。

Google使用Brotli壓縮算法進行了各種測試,並將結果與其他現代壓縮算法進行了對比。根據這項研究,Google發現Brotli在壓縮率方面平均比Zopfli(另一種現代壓縮算法)高出20-26%。在性能方面,文件壓縮得越小總是受歡迎的。

在服務器上安裝和配置Brotli

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文件以指定所需的配置指令。以下指令用於這些性能測試;但是,您可以根據需要修改它們。

Brotli設置

<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現在應該已安裝並配置在您的服務器上。要驗證這一點,您可以選擇兩種方法。

  1. 使用Brotli測試工具,該工具將根據域名檢查服務器是否支持Brotli。 Measuring the Effects of Brotli Compression on WordPress
  2. 使用Chrome瀏覽器,打開Chrome開發者工具並導航到“網絡”選項卡。刷新頁面並選擇一個資源。您應該會看到content-encoding的值現在為br,代表Brotli。 Measuring the Effects of Brotli Compression on WordPress

配置Brotli以與WordPress配合使用

此時,您應該能夠使用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。

Measuring the Effects of Brotli Compression on WordPress

在WordPress上進行Brotli性能測試

如上所述,我們的Brotli性能測試是在三種不同的場景下進行的。

  1. 啟用Gzip的WordPress
  2. 啟用Brotli的WordPress
  3. 啟用Brotli 支持Brotli的CDN的WordPress

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 11 – 壓縮大小:67.7 KB
  • Gzip 9 – 壓縮大小:76.7 KB

儘管在這兩種情況下,將壓縮級別設置為最大可能並非必要(因為壓縮時間長得多),但值得注意的是,Brotli網站的可壓縮資源大小比Gzip網站的可壓縮資源大小小13.2%。

Brotli支持現狀

Brotli並非所有瀏覽器都普遍支持,儘管許多流行的瀏覽器目前都支持它(截至2017年5月)。

Measuring the Effects of Brotli Compression on WordPress https://www.php.cn/link/fc5f86251458722c799d1830fa0c2c1f

至於服務器支持,大多數流行的Web服務器都提供官方或社區創建的模塊。如本文的安裝過程所示,Nginx用戶必須安裝擴展程序並使用Brotli支持編譯Nginx。同樣,Apache用戶可以使用mod_brotli模塊來交付Brotli壓縮的內容。

Brotli的優缺點

和任何事物一樣,使用Brotli也有其優缺點。以下是一些需要考慮的幾點。

優點

  • 更小的壓縮結果
  • 更快的加載時間
  • 與Gzip相比,壓縮時間相當

缺點

  • 目前採用起來有點麻煩
  • 並非所有瀏覽器都支持
  • 需要手動配置才能與WordPress完全集成

此外,Brotli只能在HTTPS上使用,這既可以看作是優點,也可以看作是缺點。一方面,它正在幫助更多網站從HTTP遷移到HTTPS,從而創建一個更安全的互聯網。另一方面,它為那些想要啟用Brotli但仍在使用HTTP的用戶帶來了更多工作。

總結

如測試結果所示,在WordPress網站上實現Brotli在性能方面非常有益。在源服務器上實現Brotli允許在服務器端進行壓縮,然後在支持Brotli壓縮的CDN上緩存該內容,從而實現更快的資源交付。

儘管Brotli尚未被所有瀏覽器普遍支持,但重要的是要識別訪問者最常使用的瀏覽器,並通過提供更快的加載時間來滿足他們的需求。此外,對於那些使用尚未支持的瀏覽器的用戶,這些瀏覽器只會回退到使用Gzip——雙贏的局面。

關於WordPress Brotli壓縮的常見問題解答(FAQ)

Brotli和Gzip壓縮有什麼區別?

Brotli和Gzip都是用於壓縮數據的算法,但它們有一些關鍵區別。由Google開發的Brotli是一種較新的算法,它比Gzip提供更好的壓縮率。這意味著它可以使文件更小,這可以加快網站的加載速度。但是,Brotli不像Gzip那樣得到廣泛支持,因此它可能無法在所有瀏覽器或服務器上運行。

Brotli壓縮如何提高網站性能?

Brotli壓縮通過減小構成網站的文件的大小來工作。這意味著當用戶訪問您的網站時,他們的瀏覽器需要下載的數據更少,這可以加快加載速度。更快的加載速度可以改善用戶體驗,並對網站的SEO產生積極影響。

所有瀏覽器都支持Brotli壓縮嗎?

雖然包括Google Chrome和Firefox在內的許多現代瀏覽器都支持Brotli壓縮,但並非所有瀏覽器都支持它。例如,Internet Explorer不支持Brotli壓縮。因此,在決定是否使用Brotli壓縮時,務必考慮您的受眾及其可能的瀏覽器使用情況。

如何測試我的網站是否正在使用Brotli壓縮?

有幾種可用的在線工具可以測試您的網站是否正在使用Brotli壓縮。這些工具通過向您的網站發送請求,然後分析響應以查看它是否已使用Brotli進行壓縮來工作。

我可以在我的WordPress網站上使用Brotli壓縮嗎?

是的,您可以在您的WordPress網站上使用Brotli壓縮。但是,實現Brotli壓縮可能比其他類型的壓縮更複雜,因為它需要修改服務器配置。還有一些插件可以幫助您在WordPress網站上實現Brotli壓縮。

使用Brotli壓縮的潛在缺點是什麼?

雖然Brotli壓縮可以提高加載時間,但它並非沒有潛在的缺點。首先,它不像其他壓縮方法(如Gzip)那樣得到廣泛支持。這意味著它可能無法在所有瀏覽器或服務器上運行。此外,Brotli壓縮可能比其他方法更消耗資源,這可能會減慢服務器速度。

Brotli壓縮是如何工作的?

Brotli壓縮通過查找並刪除數據中的冗餘來工作。它使用常用單詞和短語的字典來將重複數據替換為更短的表示形式,從而減小數據的整體大小。

Brotli壓縮會影響我的網站SEO嗎?

是的,Brotli壓縮可能會對您的網站SEO產生積極影響。這是因為搜索引擎在對網站進行排名時考慮的因素之一是加載時間。通過減小網站文件的大小,從而提高加載速度,Brotli壓縮可以幫助提高網站的SEO。

Brotli壓縮適用於所有類型的網站嗎?

Brotli壓縮可以使許多類型的網站受益,特別是那些擁有大量文本數據(如博客或新聞網站)的網站。但是,對於包含大量多媒體內容的網站,它可能不太有益,因為此類內容通常已經過壓縮,並且使用Brotli可能不會看到顯著的尺寸減小。

如何在我的服務器上實現Brotli壓縮?

在服務器上實現Brotli壓縮通常需要修改服務器的配置文件以啟用Brotli壓縮並指定應壓縮的文件類型。確切的過程可能因服務器的操作系統和您使用的Web服務器軟件而異。

以上是測量Brotli壓縮對WordPress的影響的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn