Hi everyone,
We’re on Cloud and when authors publish /content/acme/en/products.page.html, that URL updates right away, but the versions with selectors (like /content/acme/en/products.list.page.html) and the clean URL (/content/acme/en/products) stay stale for a few minutes behind the CDN/Dispatcher. How can I track down what’s caching what, and fix it so all variants invalidate together?
Solved! Go to Solution.
Views
Replies
Total Likes
Hi @SanaQu,
Try running a few quick header checks on each variant right after publish like :
# canonical
curl -I https://www.example.com/content/acme/en/products.page.html
# selector
curl -I https://www.example.com/content/acme/en/products.list.page.html
# extensionless (clean)
curl -I https://www.example.com/content/acme/en/products
Look at:
Age, X-Cache, Via → tells you CDN hits.
Any X-Dispatcher-*/X-Cache-Info (or log grep) - Dispatcher.
Cache-Control / Surrogate-Control / ETag / Last-Modified - whether revalidation is even possible.
If canonical is fresh but the other two show Age climbing, you’ve confirmed variant-specific caching.
Invalidate dispatcher: Set .stat at site depth and allow html/json invalidation:
/cache { /statfileslevel "3" } # /content/acme/en/.stat
/invalidate {
/0000 { /glob "*" /type "deny" }
/0001 { /glob "*.html" /type "allow" }
/0002 { /glob "*.json" /type "allow" }
}
ath the end, see if your rewrite makes extensionless resolve to the canonical before cache keying.
If variants stay, purge with a wildcard or shared surrogate key (e.g., /content/acme/en/products*).
If everything redirects to canonical, one purge is enough.
curl -I each variant - Age: 0 right after publish; no mismatched keys.
Hi @SanaQu,
Try running a few quick header checks on each variant right after publish like :
# canonical
curl -I https://www.example.com/content/acme/en/products.page.html
# selector
curl -I https://www.example.com/content/acme/en/products.list.page.html
# extensionless (clean)
curl -I https://www.example.com/content/acme/en/products
Look at:
Age, X-Cache, Via → tells you CDN hits.
Any X-Dispatcher-*/X-Cache-Info (or log grep) - Dispatcher.
Cache-Control / Surrogate-Control / ETag / Last-Modified - whether revalidation is even possible.
If canonical is fresh but the other two show Age climbing, you’ve confirmed variant-specific caching.
Invalidate dispatcher: Set .stat at site depth and allow html/json invalidation:
/cache { /statfileslevel "3" } # /content/acme/en/.stat
/invalidate {
/0000 { /glob "*" /type "deny" }
/0001 { /glob "*.html" /type "allow" }
/0002 { /glob "*.json" /type "allow" }
}
ath the end, see if your rewrite makes extensionless resolve to the canonical before cache keying.
If variants stay, purge with a wildcard or shared surrogate key (e.g., /content/acme/en/products*).
If everything redirects to canonical, one purge is enough.
curl -I each variant - Age: 0 right after publish; no mismatched keys.
Hi @SanaQu ,
What’s happening is:- when you publish, only the exact path /products.page.html gets invalidated. Variants like /products.list.page.html or the extensionless /products are treated as separate URLs by the CDN/Dispatcher, so they stay cached until TTL expires.
Check the AEM Publish flush logs to see what paths are being invalidated.
Adjust your Dispatcher/CDN cache rules so cache-invalidations include selectors and extensionless variants (wildcards or regex).
Or configure resource-based invalidation (invalidate by node path) so all URL variants of the same page clear together.
selectors and clean URLs aren’t auto-flushed — you need to expand your cache flush rules to cover them.
Views
Replies
Total Likes