pbs-projects/PBS/Tech/cloudflare-cache-woocommerce.md

2.4 KiB

project type status tags created updated path
cloudflare-cache-woocommerce tech-setup completed
pbs
cloudflare
woocommerce
cache
production
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