WordPress 網站很慢怎麼辦?
從主機層到外掛層的 8 個檢查順序

作者:邦邦(瑪尼國際 工程師)· 2026 年 9 月 · 閱讀時間約 9 分鐘

WordPress 網站很慢的時候,最常見的處理方式是直接加錢換更貴的主機方案,而這通常是八個檢查裡最後才該做的一個。原因很簡單:「慢」這個字底下至少藏著兩件完全不同的事——主機把網頁算出來要多久,以及瀏覽器把畫面畫完要多久。沒有先把這兩段分開,任何調整都是碰運氣。這篇按照「先量、再免費、最後才花錢」的順序,把 8 個檢查項目排好,每一項都寫出在哪裡查、看什麼數字、預期能拿回多少時間。

先講適用範圍:這篇處理的是既有網站變慢的診斷順序。如果你還在挑主機、想知道哪些規格會影響 WordPress 的速度,那是另一個題目,整理在WordPress 主機怎麼選;如果網站是十年前用 PHP 4.x 寫的舊架構、根本不是 WordPress,判斷該修還是該重做請看老網站升級還是重做

順序檢查項目在哪裡查動手成本
0量 TTFB 與整頁載入時間瀏覽器開發者工具 / curl五分鐘
1PHP 版本cPanel MultiPHP Manager十分鐘,需測相容性
2頁面快取有沒有真的命中回應標頭一鍵啟用
3壓縮與瀏覽器快取回應標頭 / .htaccess兩行設定
4外掛:哪一支吃掉時間二分法停用測試半小時
5資料庫:autoload 與殘留資料phpMyAdmin半小時,先備份
6媒體:原尺寸圖片媒體庫 / 檔案大小依圖片量
7背景作業:wp-cron 與心跳wp-config.php / 主機排程二十分鐘
8第三方腳本與外部字型開發者工具的網路面板依數量

先量兩個數字,把「慢」切成兩半

在動任何設定之前,先取得兩個數字:TTFB(Time To First Byte,主機回應第一個位元組所花的時間)與整頁載入完成時間。前者衡量主機端,後者包含瀏覽器下載與繪製。兩個數字的關係決定你接下來要往哪個方向查:

TTFB整頁時間該查哪裡
0.1~0.3 秒4 秒以上瀏覽器端。往下跳到檢查 6、8(圖片與第三方腳本)
0.8 秒以上任何值主機端。依序做檢查 1~5
時快時慢,同一頁差好幾倍快取沒有命中,或同機資源被別人吃掉。先看檢查 2

量法有兩種。開發者工具的「網路」面板點第一筆文件請求,看 Waiting for server response 那一段,就是 TTFB。命令列的量法更適合重複比較,同一行指令多跑幾次看穩不穩:

curl -s -o /dev/null \ -w "ttfb=%{time_starttransfer}s total=%{time_total}s size=%{size_download}\n" \ https://你的網域/

要有個參照基準。我們在自家主機上對同一台機器的網頁量過三輪,扣掉 TLS 握手之後,主機端把一頁算完並開始送出大約是 2 到 13 毫秒——這是純手寫 PHP、沒有資料庫查詢的頁面,不是 WordPress,這裡只是用來說明「主機硬體本身能給你多少時間預算」。同一台機器上,一個沒有頁面快取的 WordPress 首頁會比這個數字高上一到兩個量級,因為每一次請求都要重新載入佈景與外掛、重跑 PHP、再對資料庫下數十次查詢。這中間的落差,就是後面幾個檢查要拿回來的東西。

主機層的三個檢查:PHP 版本、頁面快取、壓縮

檢查 1:PHP 版本——但效益可能沒有你想的那麼大

「升 PHP 版本網站就會變快」是流傳最廣的一句建議,實際上它只對某些人成立。我們在同一台主機上用同一支測試程式跑過各版本的 PHP,內容是字串處理、關聯陣列查表、浮點運算與雜湊序列化的混合,每版跑三次取最佳值:

PHP 版本執行時間(秒)相對 5.6
5.6.400.422基準
7.0.330.189少 55%
7.4.330.148少 65%
8.0.300.142少 66%
8.1.340.146少 65%
8.5.100.147少 65%

讀法是這樣:從 5.x 跨到 7.0 是斷崖式的改善,7.4 之後就進入持平區間,7.4 和 8.5 的差距落在量測誤差範圍內。所以還停在 5.6 或 7.0 的網站,切版本是投報率最高的一步;已經在 7.4 以上的,請把注意力移到檢查 2。要說明的是,這是純 PHP 的微基準,不含資料庫查詢與網路傳輸,不能直接換算成 WordPress 的頁面時間——它回答的是「語言本身的執行速度差多少」,不是「你的網站會快幾秒」。

不過升到 8.x 仍然值得做,理由不是速度而是安全更新與外掛相容性:舊版 PHP 早已停止接收官方安全修補,而越來越多外掛在新版本要求最低 PHP 8.0。切換的做法在 cPanel 的 MultiPHP Manager,以網域或子目錄為單位指定。我們主機上實際並存 15 個 PHP 版本(5.3、5.4、5.5、5.6、7.0 到 7.4、8.0 到 8.5),所以可以先把測試站切上去跑一輪,確認佈景與外掛都正常再動正式站。

切版本前先做這三件事

  1. 先備份資料庫與檔案。切版本本身可以隨時切回來,但若切換後你順手更新了外掛,就回不去了。
  2. 先在測試站或子目錄試。最常出問題的是停止維護的老佈景、自訂的短代碼,以及使用了 PHP 8 移除函式的小外掛。
  3. 切完把錯誤記錄打開看一輪。有些相容性問題不會讓網頁掛掉,只會在背景每次請求都拋警告,反而把速度拖慢。

檢查 2:頁面快取有沒有真的命中

這是整份清單裡效益最集中的一項。頁面快取的作用是把 PHP 算好的 HTML 存起來,下一位訪客直接拿現成的,不必再跑一次佈景、外掛與資料庫。差別不是百分之幾,而是數量級。

問題在於「有裝快取外掛」跟「快取真的在用」是兩回事。常見的失效原因有:後台開了但規則沒套用到首頁、有外掛在每個頁面呼叫 session_start() 或設了 cookie 導致整站被判定為不可快取、佈景把購物車或會員資訊塞進共用區塊、或是快取被設成只在登出狀態生效但你一直登入著在測。

驗證方式是看回應標頭,不要只看外掛後台的綠燈。用無痕視窗(確保未登入)對同一個網址連續請求兩次:

curl -sI https://你的網域/ | grep -i "x-litespeed-cache\|cache-control\|age\|x-cache"

第一次通常是 miss,第二次應該要看到命中的標記。如果第二次還是 miss,代表快取根本沒生效,先把這件事解決再往下走——因為後面的外掛與資料庫優化,在快取命中的頁面上根本不會被執行到。

我們的 Linux 虛擬主機跑在 LiteSpeed Web Server 上,標準配備含 LiteSpeed Cache(WordPress 外掛端一鍵啟用的伺服器端頁面快取,含圖片壓縮與 WebP 轉檔)與 AccelerateWP(在 cPanel 一鍵開啟物件快取、CSS 與 JS 最佳化、圖片延遲載入)。這兩層各自解決不同的問題:頁面快取處理「同一頁被很多人看」,物件快取處理「同一次請求裡重複查同樣的資料」。兩者能開的範圍與其他主機功能整理在虛擬主機能做到什麼

檢查 3:壓縮與瀏覽器快取——兩行設定,體積少三分之二

HTML、CSS 與 JS 是純文字,壓縮率極高,而這件事只需要伺服器設定,不必動 WordPress 一行程式。我們對自家一篇文章頁做過對照,同一個網址只換 Accept-Encoding 標頭:

檔案未壓縮gzipbrotli
文章頁 HTML58,782 bytes22,092 bytes(少 62%)19,726 bytes(少 66%)
樣式表 CSS11,610 bytes2,861 bytes(少 75%)

對行動網路的訪客來說,少傳三分之二的位元組是實打實的秒數。檢查方式一樣看回應標頭有沒有 content-encoding: brgzip;沒有的話在 .htaccessmod_deflatemod_brotli 指定要壓縮的 MIME 類型即可。同一個檔案順便設定圖片、CSS、JS 的瀏覽器快取期限,回訪的使用者連下載都省了。

WordPress 層的三個檢查:外掛、資料庫、媒體

檢查 4:外掛——用二分法找出吃掉時間的那一支

外掛數量本身不是重點,重點是「每一次請求各自吃掉多少毫秒」。有些外掛只在後台運作,前台零成本;有些外掛會在每一頁都插入一段外部請求,等到對方伺服器回應才繼續,這種一支就能拖垮整站。

不想再多裝一支分析外掛的話,二分法就夠用了:在測試環境把外掛停用一半,量 TTFB;哪一半改善明顯,就在那一半裡再切一半,四到五輪就能定位到單一外掛。十六支外掛用這個方法四輪就找得出來。找到之後的處理順序是:確認是否有輕量替代品、確認功能是否還在用、確認能否只在需要的頁面載入。

三種典型的高成本外掛

  • 每頁都對外連線的外掛:社群動態、匯率、即時庫存、外部評論。對方慢,你就跟著慢,而且這段時間完全不在你的主機控制範圍內。
  • 在前台跑複雜查詢的外掛:相關文章、熱門排行、複雜的篩選器。這類功能應該算好存起來,而不是每次即時算。
  • 功能重疊的多個外掛:兩套 SEO 外掛、兩套快取外掛、兩套表單外掛同時裝著,除了浪費時間還常互相打架。

檢查 5:資料庫——autoload 與長年殘留

WordPress 每一次請求都會把 wp_options 裡標記為自動載入的資料整批讀進記憶體。這張表用久了會被外掛塞進大量設定,而外掛移除時往往不會清掉自己寫的資料。在 phpMyAdmin 執行下面幾條查詢,先看數字再決定要不要動手(資料表前綴不一定是 wp_,請改成你自己的):

-- 自動載入的資料量,先看這個欄位實際有哪些值 SELECT autoload, COUNT(*) AS n, ROUND(SUM(LENGTH(option_value))/1024) AS kb FROM wp_options GROUP BY autoload; -- 過期的暫存資料 SELECT COUNT(*) FROM wp_options WHERE option_name LIKE '\_transient\_%'; -- 文章修訂版本 SELECT COUNT(*) FROM wp_posts WHERE post_type = 'revision'; -- 沒有對應文章的孤兒中繼資料 SELECT COUNT(*) FROM wp_postmeta pm LEFT JOIN wp_posts p ON p.ID = pm.post_id WHERE p.ID IS NULL;

幾個判讀要點。第一,autoload 這個欄位的值在不同 WordPress 版本並不相同(早期只有 yes 與 no,較新的版本另有 on、off、auto),所以先用 GROUP BY 看實際有哪些值,再決定條件怎麼寫。第二,自動載入的總量實務上控制在 1 MB 以內比較安全,WordPress 內建的「網站健康狀態」在這個數字偏高時也會出現提示。第三,修訂版本可以在 wp-config.phpWP_POST_REVISIONS 限制筆數,不必完全關掉。

清理之前一定要先匯出整份資料庫。這幾條查詢只是 SELECT,跑再多次都安全;真正刪資料的動作沒有回頭路,而且錯刪 wp_options 的關鍵設定會讓網站直接白畫面。我們主機端的資料庫是 MySQL 8.4,在 cPanel 就能直接匯出,花的時間遠比事後救援少。

檢查 6:媒體——上傳原尺寸圖是最常見的單一肇因

這一項通常不需要工程師。用手機或相機直接上傳的照片,一張動輒三到六 MB、寬度五千像素以上,而網頁上實際只會顯示八百像素寬。瀏覽器仍然得把整張下載完再縮小,流量與時間全都浪費掉。首頁放十張這種圖,光圖片就是幾十 MB。

處理原則三條:上傳前先把長邊縮到實際顯示尺寸的兩倍以內;優先輸出 WebP 格式(LiteSpeed Cache 的圖片最佳化可以自動轉);首屏以外的圖片使用延遲載入。做完這三件事再回去量一次整頁時間,通常是整份清單裡改善幅度第二大的一項,僅次於頁面快取。

最後兩個檢查,以及什麼時候才真的該換規格

檢查 7:wp-cron 與心跳機制

WordPress 預設沒有自己的排程器,它把到期的排程工作掛在「下一位訪客的請求」上執行。流量小的網站感覺不到,一旦排程堆積(定期備份、寄信、外掛的資料同步),倒楣的那位訪客就會等上好幾秒。標準做法是在 wp-config.php 關掉這個機制,改由主機端的排程固定間隔觸發:

// wp-config.php define('DISABLE_WP_CRON', true); # cPanel 的 Cron Jobs,每 15 分鐘一次 */15 * * * * /usr/local/bin/php /home/你的帳號/public_html/wp-cron.php >/dev/null 2>&1

另一個是心跳機制:編輯文章的畫面每隔十幾秒就會對 admin-ajax.php 送一次請求做自動儲存與鎖定偵測。一個人開三個編輯分頁,後台就會持續有請求在排隊。降低頻率或只在編輯畫面啟用,後台的操作感受會明顯不同。同理,如果網站沒有用到遠端發文,xmlrpc.php 也是常被自動化程式反覆敲的入口,關掉可以順便減少無謂負載。

檢查 8:第三方腳本與外部字型

這一段主機商幫不上忙,但它常常是「TTFB 明明很低、使用者卻覺得很慢」的答案。分析工具、標籤管理器、線上客服小工具、社群像素、外部載入的網頁字型,每一個都是一次額外的網域解析加連線加下載。開啟開發者工具的網路面板,把請求按網域分組排一次,就會看到有多少位元組其實來自別人的伺服器。

能做的三件事:把確定用不到的追蹤碼移除(通常會留下好幾個歷任廠商裝的);把網頁字型改成自行放在主機上,順便只保留實際用到的字重;剩下的腳本加上延後載入,不要擋住首屏繪製。

什麼時候才該換更大的規格?三個判準

  1. 頁面快取確認命中,TTFB 仍然偏高。代表回應本身就慢,而不是 PHP 算太久,這時才輪到硬體與資源額度。
  2. 網站性質讓快取命中率拉不上來。會員中心、購物車、每位訪客看到不同內容的頁面,本來就沒辦法共用快取,PHP 與資料庫的實際負載就是高。
  3. 需要 root 權限、常駐行程或長時間佔用 CPU。這已經超出共享環境的設計範圍,該直接看 VPS 或實體主機。

三種情況都不符合,就先別換方案。各類型主機的價格與規格差異整理在主機租用費用一年多少;如果是打算換主機商,搬移的順序與最容易出包的地方見網站搬家怎麼搬才不出包

瑪尼國際成立於 2004 年,深耕逾 20 年,服務超過 500 家企業。我們處理 WordPress 變慢的案子時,順序跟上面這份清單是一樣的:先量、再把不用花錢的做完、最後才談規格。會這樣排,是因為多數網站在第 2 項到第 6 項之間就找到答案了。需要有人幫忙從主機端一路查到外掛端,或是希望把網頁設計、主機與長期網站代管交給同一組人負責,我們提供的一條龍服務就是為了避免「設計公司說是主機慢、主機商說是程式寫得不好」這種互踢皮球的狀況。

常見問題

Q:WordPress 網站很慢,直接換一台更貴的主機有用嗎?

先量過再決定。把瀏覽器開發者工具或 curl 量到的 TTFB(主機回應第一個位元組的時間)和整頁載入時間分開看:如果 TTFB 只有一兩百毫秒、整頁卻要五秒,慢的是瀏覽器端的圖片與腳本,換主機不會有改善;如果 TTFB 本身就要一秒以上,才輪到主機層。而且就算確定慢在主機層,順序也是先開頁面快取、再查外掛與資料庫,這三件事都不用花錢。真正該換規格的情況只有三種:頁面快取命中時 TTFB 仍然偏高、網站性質讓快取命中率拉不上去(會員或購物車頁面居多),或是需要 root 權限與常駐行程。

Q:WordPress 升級 PHP 版本可以變快多少?

要看你現在在哪一版。我們在同一台主機上用同一支測試程式跑過各版本 PHP,取三次最佳值:5.6 是 0.422 秒、7.0 是 0.189 秒、7.4 是 0.148 秒、8.0 是 0.142 秒、8.5 是 0.147 秒。也就是從 5.6 升到 7.0 執行時間少了約 55%,但 7.4 以後就進入持平區間,7.4 和 8.5 的差距在量測誤差範圍內。結論是:還停在 5.x 或 7.0 的網站,升級版本是投報率很高的一步;已經在 7.4 以上的網站,別再把 PHP 版本當成加速手段,該去查快取與外掛。要注意這是純 PHP 的微基準,不含資料庫查詢與網路傳輸,不等於 WordPress 的實際頁面時間。

Q:WordPress 後台很慢、前台卻正常,是什麼原因?

多半是三個背景機制之一。第一是 wp-cron:WordPress 預設把排程工作掛在訪客的請求上執行,後台每次換頁都可能觸發一批到期的排程。第二是心跳機制(admin-ajax.php):編輯畫面每隔十幾秒就會送一次請求,開著很多分頁時會互相排隊。第三是後台的儀表板小工具會連外抓新聞與更新資訊,外部網站慢就一起卡住。前台通常有頁面快取擋著,所以看不出來。處理順序是先把 wp-cron 改由主機端的排程固定間隔觸發,再調整心跳頻率,最後關掉用不到的儀表板小工具。

想找人把您的 WordPress 從主機端查到外掛端?

我們的 Linux 虛擬主機跑在 LiteSpeed Web Server 上,標配 LiteSpeed Cache 與 AccelerateWP、15 個 PHP 版本可自行切換,中華電信光纖機房不鎖頻寬,SSL 合約期間免費。

免費諮詢與健檢 →
本站由瑪尼國際自行設計、開發與維運(PHP 8.5 / MySQL 8.4,中華電信光纖機房)。我們同時承接企業官網設計、虛擬主機與網站代管 — 了解服務內容

延伸閱讀GUIDE

查看全部 50 篇文章 →

📞 技術支援(24小時):0921-070-027  |  📞 免費諮詢:0800-670000 📍 411 台中市太平區育賢路366號4樓之2  |  ✉ mani@mani.com.tw