MO STORIES
WordPress on Zeabur 為什麼不要亂開頁面快取?Breeze 跳版案例解析
先說結論 WordPress 放在 Zeabur 這類 Docker 化環境時,Breeze 的頁面快取不要亂開。 原因不是 Breeze 很爛,而是它的頁面快取機制會在 WordPress boot 很早期就回傳舊 HTML。當你同時使用 Elementor、Cloudflare、部署流程、R2 圖床或檔案版本控制時...

先說結論
WordPress 放在 Zeabur 這類 Docker 化環境時,Breeze 的頁面快取不要亂開。
原因不是 Breeze 很爛,而是它的頁面快取機制會在 WordPress boot 很早期就回傳舊 HTML。當你同時使用 Elementor、Cloudflare、部署流程、R2 圖床或檔案版本控制時,舊 HTML 很可能還指向舊 CSS。結果就是:GitHub push 後,前台突然跳版,停用再啟用快取才恢復。
比較穩的做法是:Breeze 保留檔案優化,頁面快取交給 Cloudflare,PHP 交給 OPcache,資料庫查詢交給 Redis Object Cache。
如果你還在判斷「主機、CDN、快取外掛誰該先做」,先看這篇支柱文:主機升級 vs CDN vs 快取外掛:WordPress 加速怎麼選。
如果你正在比較快取外掛,也可以搭配:WordPress 快取外掛推薦與比較。
為什麼 Zeabur 上的 Breeze 頁面快取容易出問題
Zeabur 的優勢是部署快、容器化、平台抽象高。這對開發很舒服,但也代表你不能用傳統共享主機的心智處理 WordPress 快取。
Breeze 的頁面快取會產生靜態 HTML,並透過 advanced-cache.php 在很早的階段回應請求。這在 Cloudways + Varnish 的情境可能很合理,但在 Zeabur / Docker 化部署裡,會多出幾個風險:
| 風險 | 會發生什麼 | 使用者看到什麼 |
|---|---|---|
| 舊 HTML 殘留 | 頁面快取還指向舊 CSS / JS | 前台樣式跑掉 |
| Elementor CSS 重生時機錯開 | 新部署後 CSS 檔案已刪,但 HTML 還在抓舊檔 | 首頁像沒套樣式 |
.htaccess 寫入受限 |
外掛切換狀態不完整 | 後台看似關閉,檔案還殘留 |
| Cloudflare 又包一層 | CDN 可能暫存舊 HTML | 清了 WordPress,前台還是舊版 |
這種問題最麻煩的地方是:它不一定每次都發生。你可能本機看正常,手機看壞;後台登入看正常,訪客看壞;清瀏覽器快取後正常,隔天又壞。
正確分工:不要每一層都做頁面快取
快取架構最怕「大家都很努力」。每一層都想幫你快取,出事時就很難知道到底是哪一層在吐舊資料。
比較乾淨的分工如下:
| 層級 | 建議責任 | Zeabur WordPress 建議 |
|---|---|---|
| Browser | 長快取 CSS / JS / 圖片 | 靠 filemtime ?ver= 破快取 |
| Cloudflare | CDN、Brotli、HTTP/3、公開頁 HTML 短快取 | 開,但購物流程要 bypass |
| Breeze | CSS/JS minify、檔案優化 | 不開頁面快取 |
| OPcache | PHP 檔案編譯快取 | 開,並調高檔案數上限 |
| Redis Object Cache | 資料庫查詢結果 | WooCommerce / Elementor 站建議開 |
| 部署流程 | 清舊快取、清 Elementor CSS | 每次 deploy 自動做 |
這樣做的好處是:出問題時你知道要查哪一層。CSS 沒更新,查檔案版本和 Elementor CSS;HTML 舊了,查 Cloudflare;後台慢,查 OPcache / Redis / DB。
建議設定:Breeze 只做檔案優化,不做頁面快取
在 Zeabur 上,我會這樣看 Breeze:
| 功能 | 建議 |
|---|---|
| Page Cache | 關閉 |
| Minification | 可測試後保留 |
| Group CSS / JS | 小心測,Elementor 站容易破互動 |
| Browser Cache | 可由 Cloudflare / headers 處理 |
| Database Optimization | 不建議當主要 DB 維護工具 |
如果你要更保守,Breeze 甚至可以只作為 Cloudways 遷移過程中的暫時外掛,不一定要長期留在 Zeabur。快取外掛不是裝越多越安心;WordPress 加速真正重要的是可驗收、可回滾、可排錯。
部署後跳版怎麼排查
遇到 Zeabur WordPress 部署後跳版,可以照這個順序查:
| 步驟 | 查什麼 | 判斷方式 |
|---|---|---|
| ① | HTML 是否舊版 | DevTools 看 CSS/JS URL 的 ?ver= 是否仍是舊時間 |
| ② | Elementor CSS 是否存在 | 檢查 /wp-content/uploads/elementor/css/ 對應檔案 |
| ③ | advanced-cache.php 是否殘留 |
檢查 wp-content/advanced-cache.php |
| ④ | Cloudflare 是否吐舊 HTML | 暫時 bypass 或 purge 單頁 |
| ⑤ | 瀏覽器是否拿舊靜態檔 | 無痕視窗、換裝置、看 response headers |
你不要一開始就把所有外掛停掉。那會讓問題消失,但也會讓你失去線索。先抓到舊資料從哪一層出來,再決定要清哪一層。
比較穩的修法
實務上我會做三件事。
① 強制關閉 Breeze 頁面快取
不要只靠後台按鈕。後台設定可能被外掛、部署、檔案權限影響。
比較穩的方式是在 theme 或 mu-plugin 裡攔截 Breeze 設定,把頁面快取狀態固定關閉。這樣就算後台有人誤開,也會被 runtime 拉回安全狀態。
② 部署啟動時清掉舊快取
每次 Zeabur deploy / container restart,都應該清:
wp-content/cache/breezewp-content/cache/breeze-minificationwp-content/uploads/elementor/csswp-content/advanced-cache.php
這不是潔癖,是避免第一個訪客拿到舊 HTML 或舊 CSS。
③ 靜態資源用檔案時間做版本
CSS / JS 檔案可以長快取,但 URL 要能隨檔案變動。
常見做法是用 filemtime() 當版本參數:
wp_enqueue_style(
'theme-style',
get_stylesheet_uri(),
[],
filemtime(get_stylesheet_directory() . '/style.css')
);
檔案沒改,瀏覽器沿用快取;檔案有改,?ver= 變,瀏覽器重抓。這比「叫使用者清快取」成熟很多。
Cloudflare 要怎麼配合
Cloudflare 可以做 HTML 快取,但要短、要排除、要能手動清。
| 規則 | 建議 |
|---|---|
| 公開首頁 / 文章頁 | 可短時間快取,例如 30 分鐘 |
/cart/* |
bypass |
/checkout/* |
bypass |
/wp-admin/* |
bypass |
/wp-login* |
bypass |
?add-to-cart=* |
bypass |
?wc-ajax=* |
bypass |
帶 wordpress_logged_in_* cookie |
bypass |
如果是純內容站,Cloudflare HTML cache 風險較低。
如果是 WooCommerce,規則要更保守。完整排除清單可以看:WooCommerce 快取怎麼設。
什麼時候可以開頁面快取
不是所有 Zeabur WordPress 都不能用頁面快取,而是你要先確認幾個條件:
| 條件 | 可以比較放心嗎 |
|---|---|
| 沒有 WooCommerce / 會員 / 個人化內容 | 較可控 |
| 沒有 Elementor 動態 CSS 或已改成穩定產生流程 | 較可控 |
| 有部署後自動清快取 | 較可控 |
| 有 Cloudflare purge 流程 | 較可控 |
| 團隊知道怎麼驗收 HIT / MISS | 較可控 |
少了這些條件,頁面快取就像在早餐店所有餐點上都貼同一張標籤。看起來出餐很快,但客人拿到什麼不一定對。
FAQ
Q1:Breeze 在 Zeabur 上一定不能用嗎?
不是。Breeze 可以用,但不建議在 Zeabur / Docker 化 WordPress 上亂開頁面快取。檔案優化可以測,頁面快取要非常保守。
Q2:為什麼 Cloudways 可以用 Breeze,Zeabur 卻要小心?
Cloudways 的 Breeze 是為 Cloudways 主機與 Varnish 整合設計。Zeabur 是容器化部署心智,檔案權限、重啟、部署後快取清理都不同,所以不能直接套同一組設定。
Q3:Elementor 部署後跳版,最常見原因是什麼?
常見原因是舊 HTML 指向舊的 Elementor CSS 檔案。新部署後 CSS 已重生或被清掉,但頁面快取仍吐出舊 HTML,前台就會像沒套樣式。
Q4:Zeabur WordPress 比較建議用哪種快取架構?
建議用 Cloudflare 做公開頁短快取,Breeze 只保留檔案優化,OPcache 處理 PHP runtime,Redis Object Cache 降低資料庫查詢壓力,購物流程與登入狀態一律 bypass。
下一步
想先建立整體決策順序,回到:主機升級 vs CDN vs 快取外掛:WordPress 加速怎麼選。
想把 Zeabur 架站流程補完整,接著看:如何在 Zeabur 設定 WordPress 網站。

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

WooCommerce 快取怎麼設?購物車、結帳頁、登入狀態哪些不能快取
WooCommerce 快取不能只追速度。這篇整理購物車、結帳頁、會員頁、add-to-cart、wc-ajax、登入 cookie 的快取排除規則,並說明 Cloudflare、頁面快取、Redis Object Cache 該怎麼分工。...

如何在 Zeabur 設定 WordPress 網站?從部署到綁定網域的完整教學
如何在 Zeabur 設定 WordPress 網站?這篇整理從建立專案、用模板部署 WordPress、綁定自訂網域、設定 DNS、檢查 SSL 到上線驗證的完整流程,也會說明它和 Cloudways 的差別。...

WordPress 快取外掛推薦:WP Rocket vs LiteSpeed vs Super Cache 誰最快?(2026)
別再看那些「推薦 10 大外掛」的農場文了。作為網站效能專家,我們只推薦這 3 款真正有效的快取方案,並揭露讓後台變快的秘密武器:Redis Object Cache。...
訂閱瘦生活電子報
每週一封故事信——分享如何用減法思維剔除雜訊、做對的事、過好生活。不說教,不推銷,只有真實的取捨紀錄。