技術架構

WordPress 的 Redis 物件快取與 wp-cron 改造:兩個看不見但有感的優化

每個 WordPress 站台有獨立 ACL 隔離的 Redis 物件快取,wp-cron 也從「靠訪客請求觸發」改成平台排程每 5 分鐘並行觸發。這兩個改動解決的是 WordPress 的兩個結構性問題。

A
Admin

🚀 想直接開始?60 秒部署你的 WordPress

全自動化 WordPress 託管 — 60 秒上線你的網站。月付 NT$299 起,輸入 FIRST-FREE 首月免費。

立即訂閱 WordPress

這兩項優化使用者平常看不到,但它們解決的是 WordPress 兩個相當經典的結構性問題。

問題一:wp-cron 靠訪客請求觸發

WordPress 內建的排程系統 wp-cron 預設不是真的 cron。它是掛在頁面請求上的——有人瀏覽你的網站時,WordPress 才順便檢查有沒有到期的排程工作。

這帶來兩個問題:

  • 沒流量的站台,排程不會跑。你設定的定時發文、備份外掛、資料同步,在半夜沒訪客的時候通通停擺。
  • 有流量的站台,訪客要幫你等。觸發排程的那個倒楣訪客,他的頁面載入時間得算上排程工作的執行時間。

RoamerHost 的做法是停用頁面請求觸發,改由平台排程每 5 分鐘、以 10 站並行的方式主動觸發所有運行中站台的 wp-cron。結果是排程準時執行,而且執行成本不會轉嫁到訪客的載入時間上。

問題二:物件快取

WordPress 每次產生頁面都要對資料庫做大量查詢——選項、文章 meta、分類法、使用者資料。沒有物件快取時,這些查詢每次請求都重跑一遍。

RoamerHost 為每個站台提供 Redis 物件快取,並且做了逐站 ACL 隔離:每個站台有自己的 Redis 使用者與密碼,只能存取自己的鍵。

為什麼 ACL 隔離重要?因為共用 Redis 最典型的災難是:某個站台執行了 FLUSHDB,把所有站台的快取一起清光。事實上這正是 WP-CLI 的 wp redis enable 指令會做的事——它會呼叫 flushdb。RoamerHost 在啟用快取時刻意避開這個指令、改用其他方式寫入設定,就是為了不讓單一站台有能力影響其他站台。

這些對你的實際意義

如果你從別家主機搬過來,可能會注意到:

  • 後台操作變順(大量查詢被快取吃掉)
  • 定時發文真的準時(不再等訪客)
  • 你不需要另外裝物件快取外掛,也不需要自己架 Redis

需要注意的是:物件快取加速的是資料庫查詢,不是頁面快取。如果你要的是整頁靜態化,那是另一個層次的東西,可以搭配 LiteSpeed Cache 外掛使用——OpenLiteSpeed 對它有原生支援。

延伸閱讀

準備好開始使用 WordPress 了嗎?

完成訂閱後 60 秒,系統自動幫你裝好 WordPress——獨立容器、資源硬性上限不與他人共用、HTTPS 開箱即用。

立即訂閱 WordPress

月付訂閱、不綁約、隨時取消

嗨,我是小浪!有任何問題都歡迎點我詢問,我來幫你解答。

小浪

小浪 - AI小助手

在線中
小浪

有任何問題都歡迎隨時詢問我,我會盡力為你解答!

Powered by RoamerHost AI