Two-layer structure: Sources (raw notes) + Wiki (compile output) Four domains: Dev (40), Venture (3), Homelab (23), Reference (0) Includes CLAUDE.md spec, index pages at all levels, compile log Co-Authored-By: Lovebug <lovebug@herbylab.dev>
3.4 KiB
3.4 KiB
| created | path | project | status | tags | type | updated | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-03-30 | Sources/Dev | cloudflare-cache-strategy | active |
|
project-plan | 2026-03-30 |
Cloudflare Cache Strategy - Cookie Bypass + Auto-Purge
Problem
After the production server migration (clone → update → promote), Cloudflare caching broke backend tools (n8n, Gitea) and WordPress admin functionality. The existing IP-based cache bypass rule failed — Jenny saved post edits that reverted on reload due to stale cached pages being served.
The IP-based approach is inherently fragile: ISP IP changes, rule ordering conflicts with new exception rules, and doesn't scale.
Decision
Replace IP-based bypass with a hybrid approach: custom cookie bypass for admin users + n8n-driven auto-purge on content publish/update.
Plan
Phase 1: Cookie Bypass
- Define custom cookie name (
pbs_admin_bypass) and generate a random secret value - Test manually: set cookie in browser DevTools, verify Cloudflare
serves
CF-Cache-Status: BYPASS - Add WPCode Lite PHP snippet that sets the cookie automatically on admin-role login
- Replace Cloudflare "Bypass Cache - Admin IPs" rule with new rule:
- Rule name: Bypass Cache - PBS Admins
- Match: Cookie contains
pbs_admin_bypass - Action: Bypass cache
- Ensure rule is ordered above "Cache Everything" rule
- Delete old IP-based bypass rule
- Verify Jenny's workflow: edit post → save → reload → changes persist
Phase 2: Cloudflare API Token
- Create scoped Cloudflare API token with only
Zone.Cache Purgepermission - Store token securely (n8n credentials store)
- Note Zone ID for API calls
Phase 3: n8n Auto-Purge Workflow
- Configure WordPress webhook(s) to fire on:
- Post publish/update
- Page publish/update
- WooCommerce product update
- WPRM recipe update
- Build n8n workflow:
- Webhook node receives WordPress payload (includes post/page URL)
- HTTP Request node calls Cloudflare purge API for the specific URL
- (Optional) Also purge homepage URL — decision pending
- Test: publish a post → verify cached version updates within seconds
- Add Google Chat notification on purge (optional)
Current Cloudflare Cache Rules (Target State)
- Bypass Cache - WP Admin Paths (
/wp-admin,/wp-login.php) - Bypass Cache - PBS Admins (cookie:
pbs_admin_bypass) - Bypass Cache - n8n/Gitea (existing exception rules)
- Cache Everything (2hr Edge TTL, 1 day Browser TTL, serve stale while revalidating)
Key Technical Notes
- Cloudflare purge API endpoint:
POST /client/v4/zones/{ZONE_ID}/purge_cache - Targeted purge supports up to 30 URLs per call
- n8n and Gitea subdomains have Cloudflare proxy disabled (separate fix)
- Cookie approach avoids Ultimate Member conflict — site members won't have the custom cookie
- If Ultimate Member membership activates later, this approach still works
(unlike
wordpress_logged_incookie)
Open Questions
- Whether to auto-purge homepage on every content update
- Whether to add a private URL endpoint as a fallback cookie-setting method
Cloudflare API Purge Example
curl -X POST "
https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/purge_cache" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
--data '{"files":["https://plantbasedsoutherner.com/updated-post-slug/"]}'
...sent from Jenny & Travis