WordPress優化教程:17個WordPress速度優化技巧

一、網站速度測試
測試網站的速度不能僅看自己電腦打開網站的速度,因為網站的訪客通常來自五湖四海,所以我們需要通過第三方專業的工具來進行測試。
網上有不少在線測試網站速度的網站,利用這些網站就能測試不同地區打開網站的速度。測試的時候不妨多測試幾次,以獲得更準確的測試結果,特別是在您網站使用了 CDN 的情況下。
國內測速
國內的測速網站可以測試不同城市伺服器連接網站的速度,但是不會告訴您加載資源的具體數據,以及優化建議。


國外測速
國外的知名測速網站有 Google PageSpeed Insights、GTmetrix、Pingdom 等,可提供詳細的測速報告,以及優化建議。如果您的網站加載速度較慢,可通過這些測速網站來查找原因。



我的網站在 Pingdom 上的評分只有 C,但是 Load time 卻很低,表明加載速度還是很快的。主要原因有兩項,Pingdom 認為我的網站沒有使用 Gzip 壓縮,但是實際上我通過 Cloudflare 使用了更先進的 Brotli 壓縮;此外由於 Cloudflare 免費版並不支持 cookie-free,所以也減分不少。
所以,有時候我們並不需要太極致的優化,對於測速網站的建議,我們只需要根據自己實際情況調整即可。只要總體加載速度夠快,對於細枝末節的優化,簡單的就做一下,影響不大卻又難以實現的,就沒必要斤斤計較。
二、購買一台快速且穩定的伺服器
伺服器的重要性就不同多說了,一台好的伺服器是一切優化的基礎。
在選擇伺服器的時候,建議大家首選大廠商,不要一味的追求性價比,速度和穩定才是第一要務。小廠商確實有時候會有性價比不錯的主機,有些速度也很不錯,但是往往穩定性就很不如意。
我曾經用過不少主機,從小廠商到中型廠商都試過。小廠商就不說了,宕機頻繁,在網站還沒有盈利時我就決定棄用了。後來用了一個中型廠商的主機很不錯,性價比極高,但是一年也會來幾次宕機或者停機更新。每一次宕機對網站的傷害都是極大的,直接的經濟損失就不說了,萬一被搜尋引擎降權那就是毀滅性的。
選擇伺服器之前,大家要先想好備案的問題。如果訪客主要在國外,那就選擇國外的伺服器,可以免備案快速開通。如果訪客主要在國內,那麼能備案儘量備案,因為網站發展到一定程度,有些事情需要備案才能辦,例如使用國內的 CDN。
1,阿里雲(備案)
網址:https://www.aliyun.com(優惠券)
阿里雲是國內雲計算的先驅,在國內市場,占領了半壁江山。在國際雲計算市場,阿里雲也占據第三位,僅次於亞馬遜 AWS 和微軟 Azure,第四和第五位分別是 IBM 和谷歌雲。(參考知乎:阿里雲真的國內雲計算第一嗎?這是阿里領先百度和騰訊的地方嗎?)
我已使用阿里雲 ECS 伺服器超過一年,目前在線率 100%,從未出現過任何問題。無論是連接速度還是穩定性都無可挑剔。所以在續費的時候我直接續了 3 年(續費年限越長,優惠越多,一年¥1477.88,三年¥2608.02)。
日常資源使用情況:

由於開始建站的時候比較急切,所以我使用的是香港節點的主機,免除了備案的麻煩。但是這導致不能全站使用國內的 CDN,我只好另外備案了一個域名做動靜分離。因此我需要額外做了許多優化工作,才能讓網站在國內達到理想的訪問速度。如果能夠全站 CDN 加速,我的網站速度還能提升一個台階。
我目前使用的伺服器方案是「共享計算型 n4(ecs.n4.small)」,1 核心 CPU,2 G 內存,SSD 20G 雲盤。每天應付數千流量毫無壓力(有使用 CDN + OSS 做動靜分離)。
如果您是建站新手,還可以選擇「輕量應用伺服器」。這種伺服器的好處是即買即用,您不用再手動安裝 WordPress 的各種伺服器環境,只要購買時選擇 WordPress 鏡像即可。

輕量應用伺服器的最低配置是 1 核 1 G、20 G SSD 雲盤、1 兆帶寬,價格 ¥60 元/月,¥612 元/年。
阿里雲經常有各種各樣的活動,購買之前記得先查看一下最新優惠活動頁面,新用戶經常都有很低的折扣,甚至低至 1 折。
2,SiteGround(免備案)
SiteGround 是美國最受好評的知名伺服器商,在 Facebook 上眾多討論小組的主機民意調查中屢獲第一。

同時也是 WordPress.org 官方推薦的主機。

SiteGround 提供很多簡化 WordPress 網站管理的工具:一鍵安裝,託管更新,WP-Cli,WordPress staging(預備測試環境) 和 git 集成。使 WordPress 的加載速度更快:基於 NGINX 的緩存,SSD 硬碟,PHP 7,CDN,HTTP / 2。 而且還可以主動保護 WordPress 網站免受黑客攻擊。
目前 SiteGround 提供三種 WordPress 主機方案,首次購買會有很大的折扣,續費時按正常價格要貴許多,所以建議直接購買 3 年。
最低價格 StartUp 方案僅需一個月 $3.95 美元。提供:WordPress 一鍵安裝、免費 SSL 和 HTTP / 2、免費每天備份、WordPress 自動更新、免費 CloudFlare CDN、免費電郵等等服務。
關於 SiteGround 的詳細介紹請參考此文章:
SiteGround-排名第一的國外 WordPress 專用主機
三、升級到 PHP 7+
有很多人會遺忘掉自己伺服器使用的是哪個版本的 PHP,特別是那些經營多年的網站,可能依然在使用 PHP 5。但是實際上您僅需簡單的升級一下 PHP 版本,您的網站速度可能就可以提升 2-3 倍。
WordPress 5.3 PHP benchmarks ▼

大多數情況下,主機商不會主動幫您更新 PHP 版本,因為您的主題或者插件可能不兼容,所以您需要自己來執行更新。這也導致很多人忘記了這一茬。如果您已經使用一台主機多年,那麼是時候檢查一下您的 PHP 版本了。
第 1 步:進入 WordPress 網站後台,在「工具」→「站點健康」中就能查看 PHP 版本。如果沒有提示,代表 PHP 版本已經是最新的了。

第 2 步:安裝 PHP Compatibility Checker 插件,檢查新的 PHP 版本是否與主題/插件衝突。

第 3 步:進入伺服器控制面板(如:Plesk、Cpanel、寶塔面板),通常都有提供不同 PHP 版本選擇或者安裝,升級至最新版本即可。如果你的主機商沒有提供面板,可以聯繫客服升級。
Plesk ▼

四、安裝緩存插件
緩存插件是提升 WordPress 網站速度的一把利器,效果立竿見影。緩存插件除了加速外,還能減輕伺服器負擔,節省資源,實在是居家旅行、殺人滅口,必備良藥!
緩存插件的作用是,把 WordPress 的網站頁面生成靜態的 html 文件,當用戶訪問時,就不用再解析 PHP 腳本,並減少資料庫的查詢,從而提升網站速度。
WordPress 的緩存插件有很多,知名的有以下這些:
在 Facebook 上的一些民意調查中,WP-Rocket 是排名第一的緩存插件。

但是它是一款收費插件,而且還不便宜,每年 $49 美元,但是經常有低至 5 折續費優惠。

WP-Rocket 不僅僅是一款緩存插件,它還內置很多優化功能,例如:HTML、CSS 和 JS 的壓縮和整合,優化資料庫,DNS 預讀取,CDN 整合、Heartbeat control、Lazyload、WebP 等等。
從我建站開始不久就一直使用 WP-Rocket,對其優化效果和穩定性都極其滿意。它功能豐富,設置簡單,節省了我很多優化工作時間,物有所值,極力推薦。

WP-Rocket 畢竟是收費的,對於大多數人來說還是傾向於使用免費插件。大家可以根據自己的需求來選擇其他插件。
WP Super Cache 是 WordPress 官方出品,知名度很高,兼容性比較好,設置雖不簡單,但也不太複雜。W3 Total Cache 雖然功能豐富,但是設置異常複雜,適合喜歡折騰的人,不建議使用。WP Fastest Cache 是後起之秀,設置簡單,建議使用。
這些免費緩存插件我都使用過,但是與 WP-Rocket 相比還是差強人意,總會有各種莫名的問題或者功能缺失,建議配合 Autoptimize 一起使用。
五、定期清理資料庫
WordPress 經過一段長時間運行後,資料庫里會產生許多垃圾內容,例如:文章修訂版本和草稿、垃圾評論、插件生成的臨時數據、trackback 和 pingback 數據等等。時間久了,資料庫將變得臃腫,降低網站運行速度。所以定期清理資料庫時很有必要的。
您可以使用 WP-Optimize 插件來完成這些工作。注意:在清理和優化資料庫時會直接修改資料庫,所以務必在操作之前先備份資料庫(推薦使用 UpdraftPlus 插件備份),以防萬一。

如果您已經購買 WP-Rocket,就無須安裝此插件,WP-Rocket 已經集成這些功能。
六、心跳控制(Heartbeat Control)
Heartbeat(心跳檢測)是 WordPress 的一項功能,當您登錄 WordPress 管理面板時,它可以在伺服器和瀏覽器之間提供實時通信。它使用文件 /wp-admin/admin-ajax.php 從瀏覽器運行 AJAX 調用。默認情況下,AJAX 請求在文章編輯頁面上每 15 秒發送一次,在儀錶板上每 60 秒發送一次。
但是 Heartbeat 並非是必要的,通常需要使用到它的一些功能是:自動保存、文章修訂、儀錶盤實時提醒、文章鎖定(多人同時編輯)、某些需要在儀錶盤上顯示實時數據的插件。
您可以使用 Heartbeat Control 插件來禁用此功能。

七、Lazyload(懶加載)
相信很多人都知道什麼是 Lazyload,如果您的網站文章存在大量圖片,那麼使用 Lazyload 就能大大提升頁面加載速度。例如微信公眾號、知乎等網站都有使用 Lazyload 功能。
網上一直都有討論 Lazyload 對 SEO 的影響,最主要的問題是導致搜尋引擎無法索引圖片。我的看法是,搜尋引擎本來對圖片的識別能力就有限,文章排名的好壞主要還是看文字內容和其他排名因素,圖片的索引與否對文章的排名影響微乎其微。
所以如果您的網站不是圖片分享型的網站,而且網站使用了大量圖片,我建議還是儘量使用 Lazyload。
Lazyload 還有一個問題,如果您的文章中帶有目錄,因為圖片只有在看到時才加載,導致點擊目錄無法準確定位。如果您像我一樣使用的是目錄插件,那麼只要把「平滑滾動」選項去掉就可以了。

Lazyload 並不是什麼複雜的技術,很多緩存插件或者圖片優化插件都附帶此功能,或者您可以單獨安裝一個 Lazyload 插件 – 使用人數最多的 a3 Lazy Load 插件。
八、緩存或禁用谷歌字體
在編輯文章的時候,WordPress 後台會自動加載谷歌字體,由於眾所周知的原因,國內是無法加載谷歌伺服器資源的,因此導致後台加載速度很慢,甚至無法打開。如果您使用的是國外開發的 WordPress 主題,也有可能使用了谷歌字體,導致國內打開速度很慢。
通過 Chrome 的開發者工具可以看到,谷歌這些字體的域名通常是 fonts.gstatic.com,或者 fonts.googleapis.com,並以 woff 或 woff2 結尾。▼
由於 WordPress 在 2019 開始啟用了古騰堡編輯器,網上很多禁用谷歌字體的代碼已無法使用。下面是最新可用的代碼,將以下代碼添加至 WordPress 主題的 functions.php 裡面就行了。
// 禁用 WordPress 後台古騰堡編輯器加載 Google 字體
function Disable_Google_Fonts($translation, $text, $context, $domain)
{
if($context != 'Google Font Name and Variants' || $text != 'Noto Serif:400,400i,700,700i') {
return $translation;
}
return 'off';
}
add_filter( 'gettext_with_context', 'Disable_Google_Fonts',10, 4);
上面的代碼只能解決後台的問題,對於前台(主題)是無能為力的。網上有很多使用代碼或者插件的解決方案,但是由於不同的主題可能需要使用不同的代碼,逐一測試很麻煩,而網上推薦的很多插件又失效了。
經過一番查詢後,我找到以下一些辦法:
在 WordPress 後台通過關鍵字「Google Fonts」來查找插件,如果有保持更新的插件那就可以嘗試使用。目前我找到的一款插件是:Disable and Remove Google Fonts。
此外,您還可以安裝 Autoptimize 插件,此插件有禁用或緩存谷歌字體的功能。Autoptimize 同時也是一款很優秀的 WordPress 優化插件,非常值得推薦使用。

或者還可以使用 OMGF | Host Google Fonts Locally 插件,把 Google 字體託管到本地。
九、使用 CDN 加速
使用 CDN 加速是提升網站速度最立竿見影的方法,建議有條件的都務必使用。
CDN 不僅能大幅提升網站訪問速度,還能隱藏伺服器真實 IP,提高伺服器安全,降低伺服器資源消耗,可謂一舉多得。
1,已備案網站
已備案的網站通常訪問對象在國內,所以理應購買國內的 CDN 服務。推薦使用阿里雲 CDN,價格僅需每天每兆流量 0.54 元(按量付費)。
阿里雲 CDN 可以流量包的形式購買,最低價格一年 ¥20 / 100 G(日流量 1 千左右的網站已經夠用了)。如果是 https 網站,需額外購買 https 請求包,價格一年 ¥40 / 1000 萬次。
購買地址:https://www.aliyun.com/product/cdn(購買前記得先領取代金券大禮包)

阿里雲 CDN 擁有國內節點 1000+,覆蓋電信、聯通、移動、鐵通、教育、長寬等各運營商。帶寬儲備 80T 。海外節點 300+,部署在全球 70 多個國家和地區,覆蓋六大洲。
主要特色功能包括:
- HTTPS 安全加速 – 防劫持、防篡改、防泄密,享受企業級可靠 HTTPS 加速服務。
- 高性能靈活緩存策略 – 智能對象熱度算法,分層緩存熱點資源,讓您的資源精準加速。
- 訪問控制 – 提供多重訪盜鏈功能,refer 防盜鏈、UA 頭防盜鏈、IP 防盜鏈、URL 鑒權校驗,完美解決盜鏈危害。
- 性能優化 – 頁面優化、智能壓縮功能,為您減少傳輸內容節約開銷的同時提升加速效果。
2,未備案網站
未備案網站的訪客主要在國外,雖然阿里雲也提供國外的 CDN 服務,但是在國外就沒必要了。因為國外有一個大名鼎鼎的 CDN 服務商:CloudFlare!最重要的是完全免費!
有人可能要問了,那國內的網站可以用 CloudFlare CDN 嗎?答案是可以,但是結果不是提速而是降速。因為 CloudFlare 在國內沒有節點,節點都在國外。國內的訪客訪問到國外的節點上去了,速度自然更慢了。
關於 CloudFlare 的設置網上有很多教程,這裡就不再贅述了。接入方式推薦使用 cname 方式,網上有很多第三方 cname 接入的網站,例如:笨牛網。此外再安裝 CloudFlare 官方插件,當文章更新時可以及時刷新緩存。
但是有一個地方需要設置正確才能大幅度提升速度,就是設置 Page Rules。因為 CloudFlare 默認情況下只會緩存圖片、css、js 等文件,html 等文章頁面是不會緩存的,通過 Page Rules 建立規則就能調整 CloudFlare 緩存哪些頁面,甚至整站緩存,這樣速度就能大幅提升。

上圖是在 CloudFlare 後台添加的一條 Page Rules。網址替換成您的網站,Browser Cache TTL(瀏覽器緩存時間) 和 Edge Cache TTL(回源周期)按照您的需求設置即可。回源周期就是 CloudFlare 多久緩存一次您網站的內容。
十、圖片優化
圖片是拖慢網站速度的一個很重要的原因,尤其是當網站使用了大量圖片的時候,例如這篇文章中就使用了很多圖片,除了使用 Lazyload,我還通過插件來解決圖片優化的問題。
我嘗試過 WordPress 的很多圖片優化插件,其中做得最優秀的當屬 Smush 和 imagify。
圖片優化插件可以自動壓縮和優化您上傳的圖片,而且還能根據您設置的最大尺寸, 自動縮小尺寸過大的圖片。圖片的體積減小了,自然加載速度就更快了。
圖片的最大寬度建議設置為和文章的寬度一樣,除非您想讓訪客能點擊放大。因為訪客能看到的寬度也就那麼大,圖片再大也只是浪費資源。查看方法如下圖(點擊放大):
如果您不想使用插件,網上也有很多網站可以利用,搜索:「在線壓縮圖片」就能找到,例如 yasuotu.com。您可以設定寬度、高度、壓縮比率來優化圖片。
圖片優化的方法還不止這些,例如禁用 WordPress 縮略圖功能以節省伺服器空間。此外還有更優雅的解決方案,就是利用阿里雲 oss 圖片處理服務實時壓縮和縮放圖片。
十一、異步加載 JavaScript
有時候,我們的網站無可避免要加載一些第三方資源,例如前面提到的谷歌字體,或者統計代碼。但是這些外部資源存在於第三方伺服器,加載的速度是不可控的,有時候會減慢網站的整體速度。
通常最常見的外部資源是加載第三方 js 文件,此時我們可以通過異步加載來解決問題。異步加載可以使得外部 js 放在最後加載和執行,這樣訪客就無須等待這些外部 js 加載完畢就能看到頁面,提升用戶體驗。
異步加載 js 很簡單,如果您可以編輯代碼,那麼只需要添加「async」或「defer」屬性即可,例如:
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
您還可以安裝 Async JavaScript 插件,這個插件可以讓您控制每個外部 js 是否需要異步加載。或者使用 Asset CleanUp 插件,這個插件不僅可以異步 js,還可以控制在哪些頁面禁用 js 腳本(有些腳本並非所有頁面都必須使用)。
此外,針對 Google Analytics 您可以使用 CAOS 插件把代碼託管到自己的伺服器。
十二、DNS Prefetch
DNS Prefetch 是一種 DNS 預解析技術。當你瀏覽網頁時,瀏覽器會在加載網頁時對網頁中的域名進行解析緩存,這樣在你單擊當前網頁中的連結時就無需進行 DNS 的解析,減少用戶等待時間,提高用戶體驗。
例如淘寶網站上就使用了 DNS Prefetch:

大部分網站都無可避免要使用到第三方網站的資源(例如百度統計),或者跳轉到其他網站的連結。此時通過 DNS Prefetch 就能省去 DNS 解析的時間,提升訪問的速度。
您可以安裝插件 Pre* Party Resource Hints 來實現 DNS Prefetch,或者在 functions.php 中添加代碼,例如:
function wp_dns_prefetch() {
echo '
<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="//bdimg.share.baidu.com/" />
<link rel="dns-prefetch" href="//api.share.baidu.com/" />
<link rel="dns-prefetch" href="//hm.baidu.com/" />
<link rel="dns-prefetch" href="//www.google-analytics.com" />
';
}
add_action( 'wp_head', 'wp_dns_prefetch');
十三、禁用無用的功能
WordPress 有一些不必要的功能,如果您不需要這些功能,那麼可以禁用掉,這樣就能節省伺服器資源。
例如:文章修訂版本、自動保存、Emoji 表情、Pingback 和 Trackback、XML-RPC、REST API 等等。
您可以使用插件 Clearfy 或者 WP Disable 來禁用這些功能。

十四、避免安裝過多插件
為什麼那麼多人喜歡使用 WordPress,其中一個原因就是有大量的插件,可以實現各種各樣的功能。但是由於插件作者的水平不一,導致插件的性能各異,還有兼容性等問題,所以安裝過多的插件反而會拖慢系統。有些人覺得 WordPress 臃腫,其中一個原因就是不當使用插件。
插件是要消耗伺服器資源的,每多安裝一個插件就代表多消耗一份資源,所以務必要控制插件的數量。如果一個插件能實現多個功能,就不要安裝一個獨立功能的插件。
此外,如果兩個插件功能相仿,要儘量使用安裝量大的插件,這表明插件更實用,而且兼容性更好。安裝量過低的插件儘量不要使用,安裝後導致系統崩潰的事情並不少見。
十五、有選擇性的禁用插件
每個插件都有相應的一些功能,但是並非網站上所有頁面都需要使用到這些功能。實際情況卻是,很多插件在安裝後,都會在網站的每一個頁面中加載自己的 js 和 css 文件,這樣頁面中就加載了很多沒必要的資源,白白浪費帶寬資源。
Asset Cleanup 非常適合于禁用在特定頁面上不使用的插件。特別是如果您安裝了許多插件,或者僅安裝了幾個資源密集型插件,但是僅需將它們加載到所使用的頁面上。這意味著整個 WordPress 網站可以加載得更快。類似的插件還有 Plugin Organizer。
利用 Chrome 的開發者工具,在 Network 中搜索「plugins」,您就能看到頁面中加載了哪些插件的資源。檢查網站上各種類型的頁面,特別是文章頁面,如果有哪些 js 或 css 是當前頁面沒有使用到的,那麼就用 Asset Cleanup 禁用掉吧。
十六、限制搜尋引擎爬蟲
搜尋引擎爬蟲是消耗伺服器資源的大戶,特別是一些勤快的爬蟲,例如 Googlebot。此外還有一些專門四處抓取網站數據的網絡爬蟲,例如 AhrefsBot。為了避免伺服器資源浪費,我們很有必要對這些爬蟲做些限制,甚至禁止訪問。
Wordfence 是一款非常強大的 WordPress 安全插件,推薦所有人安裝使用。在 WordFence 的「Tools → Live Traffic」中您可以實時查看所有訪問者信息,包括真實訪客、爬蟲、網絡攻擊等等。
找到那些您不希望抓取您網站數據的爬蟲,然後在 robots.txt 中禁止掉。例如:
User-agent: AhrefsBot
Disallow: /
User-agent: MJ12bot
Disallow: /
User-agent: YandexBot
Disallow: /
有些爬蟲可能不遵守 robots 協議,那麼您可以在「Firewall → Blocking」中設置規則來禁止訪問。

此外,Wordfence 還有一項 Rate Limiting 功能,可以限制訪問頻率,及禁止虛假 Google 爬蟲。大家可以根據自己的實際情況,限制真實人類或蜘蛛爬蟲的訪問頻率。

十七、限制文章修訂版本
在您編輯文章的過程中,每保存一次就會增加一個文章修訂版本。日積月累下,這些文章修訂版本的數量將達到一個恐怖的數量,實際上我們並不需要如此多的修訂版本,這只會增加資料庫的體積,降低資料庫的性能。
有很多插件都有限制文章修訂版本的功能,例如前面提到的 Clearfy。但是其實我們只需在網站根目錄 wp-config.php 文件中增加一行代碼就能解決問題:
define('WP_POST_REVISIONS', 3); //保存 3 個修訂版本
define('WP_POST_REVISIONS', false); //不保存任何修訂版本