WordPress 網站變慢?活用 WP-CLI 找出問題

技術分享

AI 文章延伸

AI 幫你讀這篇文章

選擇平台後可直接帶入閱讀脈絡,快速整理重點、補齊盲點,並延伸到同站相關文章。

WordPress 網站變慢的原因有很多,但大部分文章給的建議都是「裝個快取外掛」「換個好一點的主機」,這些建議沒有錯,但就像醫生還沒做檢查就開藥——你不知道病因在哪,怎麼確定這個藥有用?

我們最近幫一位客戶做了一次完整的網站效能健檢,從找到問題到修復完成,全程用的是 WordPress 內建的命令列工具 WP-CLI。這篇文章記錄整個過程,希望能讓你對效能檢查的實際流程有更具體的認識。

客戶說:「網站最近越來越慢」

這位客戶經營一個中型內容網站,用 WordPress 架設,裝了大約 40 個外掛,文章數量超過一萬篇。最近他發現不管是前台瀏覽還是後台編輯,頁面都要等好幾秒才出來。

他試過裝快取外掛、壓縮圖片,甚至換了主機方案,但改善有限,後來找到我們,希望能徹底查出問題在哪。

什麼是 WP-CLI?為什麼我們用它做檢查

WP-CLI 是 WordPress 的命令列工具。簡單來說,它讓你可以「用打字的方式」操作 WordPress,不需要打開瀏覽器登入後台。

為什麼效能檢查要用命令列?因為瀏覽器本身就會消耗資源、產生干擾。用命令列直接跟伺服器溝通,測出來的數據最乾淨、最準確,而且很多深層的檢查項目,在後台介面裡根本看不到。

第一步:看看伺服器的基本體質

第一件事不是看 WordPress,而是看整台伺服器的狀態——記憶體夠不夠、處理器忙不忙、硬碟滿不滿。

客戶的伺服器是 8GB 記憶體的雲端主機,看起來不差。但一查才發現,記憶體只剩 1.2GB,而且已經開始借用硬碟空間來運作(技術上叫 Swap)。硬碟速度比記憶體慢幾十倍,這就像你的電腦記憶體不夠,開始狂跑虛擬記憶體一樣——當然會卡。

更關鍵的是,這台主機上同時跑了 8 個 WordPress 網站,但真正有在用的只有 2 個。其他 6 個是很久以前測試用的,沒關掉也沒刪掉,白白佔著資源。

第二步:檢查快取有沒有在運作

快取的概念很簡單:把已經算過的結果存起來,下次要用直接拿,不用再算一遍。

WordPress 有兩種主要的快取:

  1. 資料庫快取:把資料庫查詢的結果存在記憶體裡。WordPress 每顯示一個頁面,可能要查幾十次資料庫,如果結果都能從記憶體直接拿,速度差很多。
  2. 頁面快取:把整個頁面的最終結果存起來。下次有人看同一頁,直接把存好的結果丟出去,連 PHP 都不用跑。

我們用 WP-CLI 一查,發現兩個都沒開:

$ wp redis status
Status: Not connected

Redis(資料庫快取的引擎)已經有裝在伺服器上,但 WordPress 沒有連上去。等於冰箱買了、插頭沒插。

修正: 用 WP-CLI 一行指令裝好外掛並啟用連線。

$ wp plugin install redis-cache --activate
$ wp redis enable
Status: Connected

啟用之後,WordPress 的快取命中率立刻衝到 96%——代表 96% 的資料庫查詢都不用真的去查,直接從記憶體拿。

第三步:這個網站到底裝了多少外掛?

$ wp plugin list --status=active --format=count
42

42 個啟用中的外掛。這個數字本身不算離譜,但問題不在數量,而在這些外掛做了多少事

WordPress 的運作方式是這樣的:每次有人瀏覽頁面,WordPress 會依序通知所有外掛「嘿,有人來了,你要不要做點什麼?」。外掛越多,被通知的對象越多,每個外掛回應的時間加起來就是你的等待時間。

我們寫了一段分析程式,算出每個外掛掛了多少個「通知接收器」:

外掛接收器數量
WooCommerce(電商)1,918 個
WPForms Lite(表單)1,518 個
ACF Pro(自訂欄位)990 個
Elementor(頁面編輯器)567 個
Polylang(多語系)538 個

第一名的 WooCommerce 不意外——電商本來就複雜。但第二名的 WPForms Lite 掛了 1,518 個接收器,而這個網站根本沒有在用它(已經有另一個表單外掛 Contact Form 7 了)。

一個沒在用的外掛,每次頁面載入都默默做了 1,518 件事。

第四步:量化每個環節花了多少時間

WP-CLI 有個進階工具叫 wp profile,可以精確計時 WordPress 載入過程中每個環節花了多久:

$ wp profile stage --context=admin

stage       time      query_time  query_count  cache_ratio
bootstrap   3.73s     0.11s       52           96.19%

一個後台頁面要花 3.73 秒才能載入完成。拆開來看:

  • 資料庫查詢:只花了 0.11 秒(佔 3%)——感謝 Redis,這部分已經很快了
  • 外掛程式碼執行:花了 2.5 秒(佔 67%)——問題在這裡
  • 其他 PHP 處理:花了約 1.1 秒(佔 30%)

有趣的是,126,830 個通知接收器在每次載入頁面時全部被觸發一次,光跑完這些就要 2.5 秒。

進一步追蹤哪些環節最慢:

環節接收器數量耗時
初始化(init)306 個687ms
載入 API 端口111 個604ms
外掛載入76 個315ms
後台初始化179 個215ms

光「初始化」和「載入 API 端口」兩個環節就吃掉 1.3 秒。這些都是 WooCommerce、Elementor、Polylang 等大型外掛在做的事。

第五步:用 Lighthouse 看前台的實際表現

除了伺服器端的檢查,我們也用 Google 的 Lighthouse 工具看了前台的載入狀況:

指標數值說明
效能評分48/100不及格
首次繪製4.7 秒使用者等太久才看到東西
最大內容繪製15 秒主要內容 15 秒才完成

Lighthouse 指出最大的前端問題是「太多 CSS 和 JavaScript 擋住了頁面顯示」——這也是外掛過多的副作用,每個外掛都往頁面裡塞自己的樣式和程式碼。

第六步:健康檢查

最後,我們跑了 WP-CLI 的健康檢查工具,做一次全面掃描:

$ wp doctor check --all
檢查項目狀態
WordPress 核心檔案完整性✅ 通過
自動載入資料大小✅ 正常(98KB)
排程任務數量✅ 正常
18 個外掛有更新可用⚠️ 需要更新
上傳目錄中有 PHP 檔案⚠️ 安全風險
多個外掛會清空快取⚠️ 可能導致效能波動

18 個外掛沒更新,代表可能有安全漏洞和效能問題。上傳目錄裡出現 PHP 檔案更是危險信號——正常情況下,上傳目錄只會有圖片和文件。

修復成果

根據檢查結果,我們做了以下修正:

  1. 啟用 Redis 資料庫快取 — 96% 的查詢直接從記憶體取得
  2. 啟用 Nginx 頁面快取 — 前台頁面由伺服器直接回傳,不跑 PHP
  3. 停用沒在用的外掛 — 從 42 個降到 36 個
  4. 更新過期的外掛 — 18 個外掛更新到最新版

效果呢?

指標修復前修復後改善幅度
前台內頁回應時間4.0 秒0.67 秒-83%
前台首頁回應時間4.0 秒2.2 秒-45%
API 回應時間3.8 秒1.9 秒-50%
WordPress 啟動時間2.7 秒1.8 秒-33%

內頁從 4 秒降到 0.67 秒,使用者體驗完全不同。

你的 WordPress 網站也有類似問題嗎?

根據我們的經驗,大部分 WordPress 網站慢的原因都不是主機太差,而是:

  • 快取沒設定好(裝了但沒連上)
  • 外掛裝太多(尤其是裝了沒在用的)
  • 很久沒做維護(外掛沒更新、資料庫沒清理)

這些問題用一般的方式很難發現。你不會在後台看到「你的 Redis 沒連上」的提示,也不會有人告訴你「WPForms Lite 每次載入做了 1,518 件事但沒一件是你需要的」。

如果你的網站也有類似的狀況,不妨試著用 WP-CLI 跑一輪檢查,或是找有經驗的人幫忙看看,通常比自己亂猜、亂裝外掛來得有效率。

常見問題

WordPress 網站變慢一定是主機的問題嗎?

不一定。我們遇到最多的情況是快取沒設定好、外掛太多、或是資料庫需要清理。這些問題換再好的主機也解決不了,要從 WordPress 本身下手才有用。

裝快取外掛就能解決速度問題嗎?

快取外掛確實有幫助,但它只是其中一環。如果你的網站有 40 個外掛每次載入都在做事,快取只能減少重複的工作,不能消除外掛本身的負擔。更重要的是,很多人裝了快取外掛卻沒有正確設定,等於白裝。

檢查完之後需要重新架站嗎?

大部分情況不用。像這次的案例,我們只是啟用了已經裝好但沒連上的快取、停用了沒在用的外掛,就有明顯的改善。除非網站的架構本身有根本性的問題,否則通常調整設定就夠了。

自己可以用 WP-CLI 做檢查嗎?

可以,WP-CLI 是免費的開源工具,只要你有伺服器的 SSH 權限就能使用。這篇文章提到的指令都可以直接跑,不過判讀結果和決定怎麼修,需要一些 WordPress 底層運作的經驗。


有類似的需求,或想進一步討論?歡迎聯絡我們,或加入我們的 LINE 官方帳號聊聊你的專案。

作品案例

看看我們打造的產品與專案。從 WordPress 外掛到 AI 客服方案,每一個作品都是實戰經驗的累積。

瀏覽作品案例

服務項目

WordPress 開發、WooCommerce 電商、LINE 整合、AI 解決方案,依據你的需求提供最適合的技術服務。

瀏覽服務項目

Contact

聯絡我們

若你有任何技術需求、專案諮詢或合作想法,歡迎隨時與我們聊聊(首次諮詢免費)。

  • 想打造 WordPress 網站或 WooCommerce 電商
  • 需要 LINE 整合或 AI 功能導入
  • 有產品點子想找技術合夥人一起實現
  • 既有網站需要改版升級或效能優化
  • 尋找長期穩定的技術顧問合作夥伴