為 WordPress 網站在 Cloudflare 設定 Cache Everything - 2025

一、為何要使用「Cache Everything」?

  1. 減少伺服器負載
    Cloudflare 通常只會為靜態檔案(圖片、CSS、JS 等)做快取。啟用「Cache Everything」可以把整個 HTML 頁面都快取下來,大量減少伺服器必須處理動態內容的次數,降低高流量時導致的伺服器過載風險。

  2. 提升前端讀取速度
    因為連 HTML 都在 Edge 上快取,訪客在瀏覽時會直接在 Cloudflare 節點取得網頁內容,大幅減少了連回原伺服器的延遲。

  3. 注意適用場景

    • 適用於不常變動、或不需要高度即時/個人化頁面的網站(如純部落格、單純內容展示)。
    • 若網站包含會員系統、購物車、登入後個人化內容等,需要另外設定例外規則,以免「Cache Everything」導致登入用戶看到錯誤或過期內容。

二、前置條件

  1. 你已將 WordPress 網站的網域接入 Cloudflare
    • 網站的 DNS 記錄 (A / CNAME) 已在 Cloudflare 後台正確設定,並且 Cloudflare 狀態是 “Proxied” (雲朵為橘色)。
  2. 關閉或調整其他可能衝突的快取外掛設定
    • 若你已安裝其他快取外掛 (如 W3 Total Cache、WP Rocket、LiteSpeed Cache 等),建議先關閉或取消其對 HTML 的快取功能,避免快取衝突。
    • 這些外掛仍可用於物件快取 (Redis)、資料庫快取、壓縮/合併資源等功能,但 HTML 部分可能要先暫停或慎選「只在伺服器端生成靜態檔」的模式。
  3. 已了解需要為哪些路徑例外
    • wp-admin、登入頁 (wp-login.php)、或會員系統頁面必須設定「Bypass Cache」或「Disable Security / Performance」等,不可被 Cache Everything。
    • 若有購物車系統 (如 WooCommerce),則要為購物車、結帳頁、會員頁等設置例外,確保動態內容不會被快取。

三、設定步驟教學

以下以範例網域 example.com 示範。如果你的網域是 www.example.com,則請把範例中的網域依實際狀況替換。

Step 1. 登入 Cloudflare 後台

  1. 前往 https://dash.cloudflare.com/
  2. 登入後,選擇你要設定的網域。

Step 2. 進入「Page Rules」(頁面規則)

  1. 在左側選單或上方頁籤,找到 RulesPage Rules(Cloudflare 介面有時會稍作調整)。
  2. 點擊後即可進入設定「Page Rules」的畫面。

Step 3. 建立第一條「Cache Everything」規則

  1. 點擊 Create Page Rule 按鈕。
  2. 在「If the URL matches:」欄位輸入:
    https://example.com/*
    
    • 如果你的網站有分別使用 www 與根網域,也可視需求輸入:
      https://www.example.com/*
      
    • 或同時做兩條規則以涵蓋根網域與 www 子網域。
  3. 在「Then the settings are:」下拉選單中,依序加上或設定:
    • Cache Level: Cache Everything
    • Edge Cache TTL:根據你網站更新頻率來決定(例如 4小時、8小時、24小時等)。若頻繁更新,時間可稍短;反之可長一點。
    • 選擇性:Origin Cache Control 可以依情況決定是否啟用或忽略原站 Cache-Control。
  4. 儲存這條規則,確認它在規則清單中「優先順位」(Priority) 排在適合的位置(通常你希望它在較後面,以免和其他排除規則衝突,見下文)。

Step 4. 建立「排除動態頁面」規則

由於 WordPress 管理後台、登入頁以及其他動態/個人化頁面不應被快取,我們通常會再新增「Bypass Cache」的 Page Rule,並將其優先度排在「Cache Everything」之前,確保先匹配到這些排除路徑。

常見的例外頁面:

  1. WP-Admin
    • 規則: https://example.com/wp-admin*
    • 設定:
      • Cache Level: Bypass
      • Disable Performance (有些版本的 Cloudflare 後台會用此選項,也可加強確保不要應用自動最適化)
      • Security Level: High (強化該路徑安全,但可視需求)
  2. WP-Login
    • 規則: https://example.com/wp-login.php*
    • 設定方式同上,確保使用 Bypass Cache。
  3. 購物車 / 結帳頁 (若使用 WooCommerce)
    • 通常路徑:https://example.com/cart*, https://example.com/checkout*
    • 同樣設定 Cache Level: Bypass。

你可以把 wp-adminwp-login.php 放在同一條規則(使用 *wp-*(admin|login)* 之類的 Regex Page Rule),但一般建議用 Cloudflare 的 Enterprise/Business 訂閱才能使用 Regex Page Rule;若是免費或 Pro 方案,多半只能用子路徑方式一條一條設定。

重要:在 Cloudflare 的 Page Rules 裏,每個網域免費只能有 3 條規則(免費方案)。若你的網站需要做更多細節排除,可能需要升級方案或用其他技術(例如 Cloudflare Workers)來擴充規則數量。

Step 5. 優先順序 (Priority) 設定

Cloudflare 會從優先度數值最小的規則開始檢查。以下是建議的排序:

  1. (Priority 1) https://example.com/wp-admin* → Cache Level: Bypass
  2. (Priority 2) https://example.com/wp-login.php* → Cache Level: Bypass
  3. (Priority 3) https://example.com/* → Cache Level: Cache Everything

如此,當訪客請求的是後台路徑、登入頁,就會先匹配到規則 1 或 2,自動跳過快取;否則就會進入規則 3,採用「Cache Everything」。


四、驗證「Cache Everything」是否生效

  1. 開啟瀏覽器開發者工具 (Chrome, Firefox 等皆可),到「Network」標籤。
  2. 前往你的網站首頁或其他頁面,重新整理一次 (Ctrl+F5)。
  3. 點擊對應的網頁請求 (通常是 example.com/) 查看 Response Headers:
    • 查找 cf-cache-status
    • 如果顯示 HIT,代表 Cloudflare 已成功從快取提供頁面。
    • 若顯示 MISS,則可能是首次訪問或 Cloudflare 還沒快取。多刷新幾次或等幾秒,再查看是否會變成 HIT。
    • 若顯示 EXPIREDREVALIDATED,表示 Cloudflare 需要重新向源站驗證或該快取已過期。

五、進階調整與注意事項

  1. 與 WordPress 自帶快取或外掛並用
    • 若使用 W3 Total Cache 或其他外掛,建議先將其「頁面快取 (Page Cache)」功能關掉,避免跟 Cloudflare 重複或衝突。
    • 還是可以使用這些外掛提供的「物件快取 (Object Cache)」、「資料庫快取 (Database Cache)」或資源壓縮與合併功能。
  2. 網站更新時快取清除
    • 若你安裝了 Cloudflare 官方 WordPress 外掛或其他整合外掛,可以在 WordPress 發佈新文章時自動清除 Cloudflare 快取,確保訪客可即時看到新內容。
    • 若沒有整合外掛,就必須手動到 Cloudflare 後台清除快取,或在 WordPress 後台 Cloudflare 外掛介面裡執行「Purge Cache」。
  3. Cloudflare APO (Automatic Platform Optimization) for WordPress
    • 若你想更自動化管理快取,可以考慮付費啟用 APO。它會比單純靠 Page Rules 省去許多手動設定,並針對動態內容(如評論)做更聰明的快取處理。
  4. 小心對登入用戶的緩存
    • 如果你有大量的登入用戶(會員或付費讀者),要避免他們看到別人的個人化資訊。確保所有需要個人化顯示的頁面都在「Bypass Cache」規則中或有動態 Cookie 處理。
  5. SSL 與 HSTS
    • 「Cache Everything」與 SSL/HSTS 無直接衝突,但記得在 Cloudflare 後台把 SSL/TLS 模式設定為「Full (strict)」或適合你環境的模式,並確保來源站點正常支援 HTTPS。
  6. 排除搜尋頁、篩選器頁面
    • 若你網站有搜索功能,搜尋結果頁面 (如 ?s=keyword) 也可能需要排除快取,否則不同使用者的搜尋會看到同一頁快取。

六、常見問題與解決方案

  1. 快取後「後台登入」突然出問題?
    • 檢查是否有把 /wp-adminwp-login.php 納入 Cache Everything。只要將它們設為「Bypass Cache」,或確定 Page Rule 排序正確即可解決。
  2. 前台一些動態功能(例如購物車數量)沒更新?
    • 這些功能需要透過 AJAX 或 Cookies 來動態顯示;若整頁被快取,可能導致顯示過期資料。必須排除這些動態部分,或改用更進階的快取策略 (APO) 或 Workers。
  3. 清除快取沒立即生效?
    • 有時 Cloudflare 全球節點需幾分鐘至十多分鐘不等才完全同步。可以嘗試進行「Purge Everything」或針對該 URL 執行「Custom Purge」,並等待一段時間後再測試。

總結

  1. 「Cache Everything」能大幅減少 WordPress 伺服器負載,尤其在高流量時非常有效。
  2. 先配置好例外規則 (Bypass Cache) 對於後台登入、購物車、結帳等動態頁面非常關鍵。
  3. 搭配 Cloudflare 官方外掛或其他快取整合外掛,可實現自動清除快取、減少人工作業。
  4. 觀察 cf-cache-status 來確認快取是否生效並持續優化 TTL 設定。

只要妥善規劃好 Page Rules 與例外路徑,你的 WordPress 網站就能享受到完整的前端快取,加快載入速度並減輕主機壓力。祝你網站在 2025 年依然順暢運行、不怕流量爆量!