Adjusting and verifying Dynamic Media CDN TTL configuration

Dynamic Media applies a default CDN cache TTL of about 10 hours, so updated images and videos take longer to refresh than expected unless the TTL is explicitly changed. Stale assets, unexpected cache misses, and mismatched TTL reporting in third-party tools usually trace back to this default, to a mismatch between the CDN layer and the Dynamic Media TTL, or to Dynamic Media relying on Date/Expires headers rather than Cache-Control. Adjusting the TTL in Dynamic Media Classic or AEM, confirming the Expires header reflects the new value, and using CDN invalidation for immediate updates resolves the behavior.

Description description

Issue: Dynamic Media assets refresh slower than expected due to CDN TTL configuration

Description

Customers notice stale Dynamic Media assets or unexpected cache behavior, commonly after publishing updated images or videos and observing delays before changes appear on the CDN. Confusion arises when TTL appears incorrect in third-party tools, when headers seem mismatched (Expires versus Cache-Control), or when CDN caching doesn’t align with Dynamic Media Classic TTL settings. The issue shows up as delayed customer-visible changes, unexpected cache misses, or mismatched browser/CDN TTL reporting.

Environment:

  • AEM Dynamic Media
  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Managed Services
  • Dynamic Media Classic / Scene7
  • BYOCDN configurations (Akamai, CloudFront, Fastly)

Issue/Symptoms:

  • Google Lighthouse or browser tools report TTL = None, or Miss from child, Miss from parent for Scene7 CDN assets.
  • The Cache-Control header shows no-cache while the Expires header shows a correct future timestamp.
  • Updated assets take 10 hours to refresh instead of the expected 1 hour or 30 days, depending on configuration.
  • CDN caching doesn’t match requested max-age values, causing delays of 12–48 hours.

Root cause:

Dynamic Media (Scene7) applies a default CDN TTL of about 10 hours unless it’s explicitly overridden through a customer-specific configuration in Dynamic Media Classic or via Adobe Support. Browser Cache-Control headers show no-cache because Dynamic Media relies on the Date/Expires headers for caching instead of Cache-Control max-age. Third-party tools such as Lighthouse don’t expose the internal CDN TTL and report it as None. A mismatch between CDN layer rules and Dynamic Media TTL values — such as BYOCDN settings, AWS behaviors, or CloudFront overrides — also causes stale assets or long refresh intervals.

How to confirm

  1. Identify whether the issue is CDN TTL, browser TTL, or a header mismatch. Open browser DevTools, go to the Network tab, select the image or video request, and record the Expires, Cache-Control, and Age headers along with the CDN status (such as “Miss from parent/child”). If the Expires header shows the expected TTL, Dynamic Media TTL is working as configured.

  2. Inspect the headers directly from the command line:

    code language-none
    curl -I <asset URL>
    
  3. Confirm whether Cache-Control: no-cache is expected. If Cache-Control shows no-cache but Expires is correct, caching still works, because Dynamic Media uses the Date/Expires headers. Request the asset twice and confirm the CDN returns a HIT after the first request.

Resolution resolution

  1. Adjust the TTL in Dynamic Media Classic. Log in and navigate to Setup > Application Setup > Publish Setup > Image Server, then locate Default Client Cache Time To Live. Enter the TTL in hours. For example: 1 hour = 1, 30 days = 720. Republish an asset and confirm the Expires header reflects the new TTL.
  2. Alternatively, adjust the TTL through AEM Author (AEMaaCS, AMS, On-Premises). Navigate to Tools > Assets > Dynamic Media Publish Setup, open Common thumbnail attributes, and adjust Default Cache time to live. Publish an asset and check the Expires header.
  3. Determine whether caching is overridden at a BYOCDN. If you use a custom CDN, verify the CDN behavior configurations for TTL overrides. For example: a CloudFront policy setting max-age to 30 days when Dynamic Media is configured for 24 hours. Confirm the CDN policy either matches the Dynamic Media TTL or intentionally overrides it, then purge the CDN cache and re-test.
  4. Use CDN invalidation instead of reducing TTL below Dynamic Media limits. If immediate updates are required, use the AEM CDN purge tools rather than lowering the TTL — the minimum TTL is 1 hour and can’t be set to 0 or 5 minutes. Reload the asset after the purge to confirm it reflects immediately.

Validation

  1. Run curl -I <asset URL> and verify the Expires header aligns with the new TTL. For example: Expires = now + 1h or +720h.
  2. Refresh the asset twice — the second request should return a CDN HIT or a shorter Age header value.
  3. Confirm updated assets appear immediately when CDN purge is used.
recommendation-more-help
experience-cloud-kcs-help-kbarticles