HomeTroubleshooting Hub › Dispatcher caching issues

Dispatcher caching issues

Purpose: Diagnose stale content, missing invalidation, and cache-related 404s at the delivery tier.

Who this page is for

AudienceWhy it matters to you
All engineers"The site shows the old version" starts here

Localise first (always)

publish direct: correct?  ──no──▶ not a cache issue: replication/ACL lane
      │ yes
dispatcher direct: correct? ──no──▶ THIS page
      │ yes
CDN: correct? ──no──▶ CDN TTL/purge lane (same logic, different cache)

Stale content on dispatcher — checklist

  1. Did a flush arrive? Dispatcher log at invalidation time (grep the path); flush agent on publish enabled + queue healthy?
  2. .stat vs file times: is there a .stat above the cached file newer than it? No new .stat ⇒ flush didn't cover this path (statfileslevel too shallow/deep for the tree — anatomy).
  3. /invalidate rules: HTML flushes by default — is your .model.json / custom extension listed? The stale-JSON-forever bug is exactly this line.
  4. Which dispatcher? With N dispatchers, one missed flush = per-user staleness (LB round-robin). Compare the cached file mtime across all docroots.
  5. Auto-invalidation scope: activating page X doesn't flush page Y that renders X's content (XF/CF embeds — XF caching note); design, not defect — fix via statfileslevel/flush rules.

Content missing / 404 through dispatcher only

Filter denial (check dispatcher.log for the rule number that denied), extensionless URL, or selector not in the pinned allowlist (security filters). The rule-number log line ends the guessing.

Cache not caching (always MISS)

CauseTell
Query string presentURL has ?…; add to /ignoreUrlParams if it's a tracking param
No extensionSling-style URL without .html
Authorization header / cookies + no allowAuthorizedConsistent MISS for logged-in flows
Backend sent no-cache (Dispatcher: no-cache header)Something in code marks it uncacheable
/rules deny for the pathConfig says don't

Emergency hygiene

Targeted invalidation (touch the right .stat / flush the path) over docroot rm -rf; full clears at peak create the cold-cache stampede you sized for in the load test — hopefully.

Quick navigation