MO STORIES
WooCommerce 快取怎麼設?購物車、結帳頁、登入狀態哪些不能快取
先說結論 WooCommerce 快取的重點不是「開到最滿」,而是公開頁可以快,購物流程不能錯。 商品分類頁、部落格文章、品牌頁可以快取;購物車、結帳、會員中心、登入狀態、加購物車參數、wc-ajax 相關請求都要排除。你可以讓訪客逛商品很快,但不能讓 A 客人的購物車出現在 B 客人畫面上。 如果你還在判斷主機、CD...

先說結論
WooCommerce 快取的重點不是「開到最滿」,而是公開頁可以快,購物流程不能錯。
商品分類頁、部落格文章、品牌頁可以快取;購物車、結帳、會員中心、登入狀態、加購物車參數、wc-ajax 相關請求都要排除。
你可以讓訪客逛商品很快,但不能讓 A 客人的購物車出現在 B 客人畫面上。
如果你還在判斷主機、CDN、快取外掛的優先順序,先看:主機升級 vs CDN vs 快取外掛:WordPress 加速怎麼選。
如果你是 Zeabur / Docker 化 WordPress,建議搭配:WordPress on Zeabur 為什麼不要亂開頁面快取。
WooCommerce 哪些頁面可以快取
可以快取的前提是:內容對每個訪客都一樣,而且不會牽涉個人狀態。
| 頁面 / 請求 | 能不能快取 | 說明 |
|---|---|---|
| 首頁 | 可以,視內容而定 | 沒有會員個人化區塊時可快取 |
| 商品分類頁 | 通常可以 | 庫存、價格若高度動態要縮短時間 |
| 單一商品頁 | 通常可以 | 加購物車按鈕本身不要把狀態寫進 HTML |
| 文章頁 | 可以 | 很適合 CDN / page cache |
| 品牌故事 / 關於我們 | 可以 | 靜態內容為主 |
這些頁面適合交給 Cloudflare、主機層快取或 WordPress 頁面快取處理。它們的任務是讓「逛」的速度變快。
WooCommerce 哪些頁面不能快取
不能快取的頁面,多半跟「這個訪客是誰」有關。
| 頁面 / 條件 | 建議 | 為什麼 |
|---|---|---|
/cart/ |
bypass | 購物車內容每個人不同 |
/checkout/ |
bypass | 結帳金額、運送、付款狀態不能錯 |
/my-account/ |
bypass | 會員資料、訂單紀錄是個人資訊 |
/wp-admin/ |
bypass | 後台不該被公開頁快取影響 |
/wp-login.php |
bypass | 登入流程不能快取 |
?add-to-cart=* |
bypass | 加購物車是動作,不是靜態頁 |
?wc-ajax=* |
bypass | WooCommerce AJAX 需要即時回應 |
wordpress_logged_in_* cookie |
bypass | 登入者看到的內容可能不同 |
woocommerce_cart_hash cookie |
bypass 或縮短 | 代表購物車狀態 |
woocommerce_items_in_cart cookie |
bypass 或縮短 | 代表購物車內有商品 |
這張表可以直接拿去當 Cloudflare Page Rules / Cache Rules、主機快取、快取外掛排除規則的基礎。
Cloudflare 快取 WooCommerce 的安全分工
Cloudflare 可以幫 WooCommerce 變快,但它應該加速公開頁,不應該碰購物流程。
| Cloudflare 功能 | 建議 |
|---|---|
| Brotli | 開 |
| HTTP/3 | 開 |
| 靜態資源快取 | 開 |
| 圖片 CDN | 開 |
| 公開頁 HTML 短快取 | 可開,但要排除購物流程 |
| Rocket Loader | 不建議,容易干擾 WooCommerce / Elementor JS |
| Cache Everything | 不要整站無腦開 |
WooCommerce 最怕的是「看起來變快,訂單卻出錯」。所以 Cloudflare 規則要先寫排除,再談加速。
頁面快取、Object Cache、OPcache 差在哪
很多人會把三種快取混在一起。
| 快取類型 | 快的是什麼 | WooCommerce 建議 |
|---|---|---|
| Page Cache | 整頁 HTML | 公開頁可用,購物流程排除 |
| Object Cache / Redis | 資料庫查詢結果 | 建議開,對商品列表、庫存查詢、後台有幫助 |
| OPcache | PHP 檔案編譯結果 | 建議開,降低 PHP runtime 負擔 |
| Browser Cache | CSS / JS / 圖片 | 建議開,但檔案要有版本控制 |
頁面快取救的是「不用重算整頁」。Redis 救的是「不用一直問資料庫」。OPcache 救的是「PHP 不用一直重新編譯」。
三者不是替代品,是不同層級。
建議快取規則範本
如果你用 Cloudflare,可以先用這個方向規劃。
| 優先順序 | 條件 | 動作 |
|---|---|---|
| 1 | URI path contains /cart |
Bypass cache |
| 2 | URI path contains /checkout |
Bypass cache |
| 3 | URI path contains /my-account |
Bypass cache |
| 4 | URI path contains /wp-admin |
Bypass cache |
| 5 | URI path contains /wp-login |
Bypass cache |
| 6 | Query string contains add-to-cart |
Bypass cache |
| 7 | Query string contains wc-ajax |
Bypass cache |
| 8 | Cookie contains wordpress_logged_in_ |
Bypass cache |
| 9 | Public product / category / article pages | Cache with short TTL |
如果你不確定規則順序,記住一個原則:排除規則放前面,加速規則放後面。
Elementor / 建構器網站要多注意什麼
WooCommerce 常常會搭配 Elementor、JetEngine、Filter 外掛、Wishlist、Mini Cart。這些工具會讓頁面更像「應用程式」,不是單純靜態頁。
| 功能 | 快取風險 | 建議 |
|---|---|---|
| Mini Cart | 顯示錯誤數量 | 用 AJAX 更新,不把狀態寫死在 HTML |
| 商品篩選 | URL / AJAX 狀態複雜 | 確認 wc-ajax 與篩選參數不被長快取 |
| Wishlist | 會員或 cookie 狀態 | 登入者 bypass |
| Elementor CSS | 部署後版本錯位 | 部署後清 CSS,靜態資源用 filemtime |
| 動態庫存 | 商品頁資訊變動快 | 縮短 TTL 或讓庫存走動態更新 |
如果你的網站部署在 Zeabur,Breeze 頁面快取要特別小心。原因可看:Breeze 跳版案例解析。
驗收方式:不要只看 PageSpeed 分數
WooCommerce 快取要驗收「速度」也要驗收「交易正確性」。
| 驗收項目 | 怎麼測 |
|---|---|
| 公開頁速度 | PSI / Lighthouse / DevTools,看 TTFB 與 LCP |
| 購物車狀態 | 開兩個無痕視窗,各自加入不同商品 |
| 結帳金額 | 測優惠券、運費、金流跳轉 |
| 登入狀態 | 登入與未登入看到的內容要不同 |
| 快取命中 | 看 response headers / Cloudflare cache status |
| 清快取流程 | 更新商品、改價格、改首頁後測是否正確更新 |
最實用的測法是:找兩台手機、兩個瀏覽器、兩個帳號,各自加不同商品。
如果畫面互相污染,代表你快取規則太激進。
常見錯誤
① 整站 Cache Everything
這是 WooCommerce 最危險的快取方式。純內容站可能沒事,電商站可能直接把交易流程弄壞。
② 只排除 /checkout,忘記 /cart
購物車也是個人狀態。只排除結帳頁不夠。
③ 忘記 wc-ajax
WooCommerce 很多互動靠 AJAX。你把它快取住,就可能看到舊狀態。
④ 登入者沒有 bypass
會員中心、訂單紀錄、個人化價格、批發價都可能跟登入狀態有關。登入者應該保守處理。
⑤ 用快取遮住資料庫問題
快取可以減壓,但不能讓壞查詢變好。後台慢、商品列表慢、篩選慢,常常還是要查 Redis、OPcache、資料庫索引與外掛查詢。
FAQ
Q1:WooCommerce 商品頁可以快取嗎?
多數情況可以,但要排除購物車、結帳、會員、加購物車、wc-ajax 與登入狀態。商品價格或庫存非常即時時,TTL 要縮短或改用動態更新。
Q2:WooCommerce 可以用 Cloudflare Cache Everything 嗎?
不建議整站使用。Cloudflare 可以快取公開頁與靜態資源,但購物流程、登入狀態與 WooCommerce AJAX 請求要 bypass。
Q3:Redis Object Cache 對 WooCommerce 有用嗎?
有。Redis Object Cache 可以降低資料庫查詢壓力,對商品列表、後台、篩選、庫存查詢有幫助。但它不是頁面快取,不能取代購物流程的 bypass 規則。
Q4:怎麼知道我的快取有沒有設錯?
用兩個瀏覽器或兩台裝置,各自加入不同商品、登入不同帳號、測優惠券和結帳。如果購物車內容、金額或會員資料互相污染,快取規則就太激進。
下一步
想先把 WordPress 整體加速順序排好,看:主機升級 vs CDN vs 快取外掛:WordPress 加速怎麼選。
想建 WooCommerce 系統主線,接著看:WooCommerce 教學 2026。

關於作者 | 10+ 經驗
MO 編輯
WordPress 效能優化專家 / MO Design Studio 共同創辦人
關注設計 × 工程的平衡協作,擅長以簡潔語言說故事。專門幫已有網站的品牌做速度升級。相信好網站不用重做,只需要正確的優化。
延伸閱讀

WordPress on Zeabur 為什麼不要亂開頁面快取?Breeze 跳版案例解析
WordPress 部署到 Zeabur 後,如果啟用 Breeze 頁面快取,可能遇到 Elementor CSS 舊版快取、部署後跳版、advanced-cache.php 殘留等問題。這篇用實戰案例拆解原因、架構分工與安全設定方式。...

WordPress 快取外掛推薦:WP Rocket vs LiteSpeed vs Super Cache 誰最快?(2026)
別再看那些「推薦 10 大外掛」的農場文了。作為網站效能專家,我們只推薦這 3 款真正有效的快取方案,並揭露讓後台變快的秘密武器:Redis Object Cache。...

WordPress 網站架設教學:從零開始的完整步驟(2026)
>-...
訂閱瘦生活電子報
每週一封故事信——分享如何用減法思維剔除雜訊、做對的事、過好生活。不說教,不推銷,只有真實的取捨紀錄。