2.4 KiB
| project | type | status | tags | created | updated | path | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| cloudflare-cache-woocommerce | tech-setup | completed |
|
2026-03-24 | 2026-03-24 | PBS/Tech/ |
Cloudflare Cache Rules - WooCommerce Setup
Background
After launching the WooCommerce store, a "coming soon" page was sticking around for visitors due to Cloudflare serving a cached version. The root cause was an aggressive "cache all" rule with no WooCommerce exceptions.
What Was Already in Place
A cache rule set to All incoming requests → Eligible for cache was in place to improve cache hit rate (previously 87% of traffic was uncached).
Problem
With a whole-site cache rule and no exceptions, Cloudflare was caching WooCommerce dynamic pages including:
- Cart
- Checkout
- My Account
- Pages tied to active shopping sessions
This caused stale content to be served to visitors, including the "coming soon" page after the store launched.
Solution
Created a new cache rule placed above the existing "cache all" rule with the following configuration:
Rule: WooCommerce Bypass
Order: First (runs before the cache all rule) Filter: Custom expression
(http.request.uri.path contains "/cart") or
(http.request.uri.path contains "/checkout") or
(http.request.uri.path contains "/my-account") or
(http.cookie contains "woocommerce")
Cache eligibility: Bypass cache TTL settings: None needed (bypass ignores TTL)
How It Works
Cloudflare cache rules use first match wins logic:
- Rule 1 catches all WooCommerce pages and active shopping sessions → bypass cache
- Rule 2 catches everything else → cache it
This means static content (recipes, homepage, product images) still gets cached for performance, while dynamic shopping pages always serve fresh content.
Key Decisions
- Used
http.cookie contains "woocommerce"instead of listing individual cookie names — broader match covers all current and future WooCommerce cookies - No browser TTL needed on the bypass rule — nothing is being stored
- Left the existing "cache all" rule unchanged — exceptions-first approach is cleaner than listing every page to cache
Result
- WooCommerce cart, checkout, and account pages now always serve fresh content
- Rest of the site continues to benefit from Cloudflare caching
- No stale page issues for customers during active shopping sessions