Problemi di configurazione della cache di controllo cache e CDN/Dispatcher in AEM

AEM Dispatcher e le CDN a valle come Fastly e Akamai restituiscono un comportamento di caching imprevisto: valori di Cache-Control che non corrispondono al TTL previsto, solo la prima variante di contenuto dinamico memorizzata in cache, URL di Dynamic Media senza intestazione Cache-Control e risposte non aggiornate che persistono dopo l’annullamento della validità. Nei registri non viene visualizzato alcun errore; il problema viene visualizzato nelle intestazioni di risposta HTTP o si verifica un comportamento incoerente della cache. La causa è una configurazione del controllo cache o una logica della chiave cache errata o mancante a livello di Dispatcher o CDN, poiché le CDN rispettano le intestazioni upstream e non memorizzano in cache in modo prevedibile quando tali intestazioni non sono impostate. La configurazione di intestazioni esplicite per il controllo della cache in Dispatcher, la regolazione della chiave della cache per le varianti dinamiche e l’impostazione di set di regole per le risorse Dynamic Media ripristina un caching corretto e prevedibile.

Descrizione description

Ambienti:

  • Adobe Experience Manager as a Cloud Service
  • Adobe Experience Manager Managed Services
  • Adobe Experience Manager on-premise
  • AEM Dispatcher e server HTTP Apache
  • Livelli CDN come Fastly e Akamai
  • Dynamic Media (Scene7)

Problema/Sintomi:

  • I valori di controllo cache come max-age o s-maxage non corrispondono ai valori previsti, ad esempio un valore predefinito di max-age=300 o max-age=60, s-maxage=7200.
  • La CDN memorizza in cache solo la prima variante del contenuto di cui è stato eseguito il rendering dinamico.
  • Gli URL di Dynamic Media (Scene7) non restituiscono alcuna intestazione Cache-Control.
  • Dispatcher o la rete CDN continua a fornire le risposte memorizzate nella cache anche dopo l’invalidazione prevista.
  • Non puoi ignorare la rete CDN o Dispatcher per visualizzare l’output di origine.

Causa principale:

La causa principale è la configurazione errata o mancante delle intestazioni di controllo cache o della logica della chiave cache a livello di Dispatcher o CDN. Le CDN come Fastly e Akamai rispettano le intestazioni di controllo della cache a monte e le impostazioni predefinite di Dispatcher influenzano ciò che viene memorizzato nella cache CDN. Pertanto, quando le intestazioni non sono configurate in modo esplicito, la CDN memorizza nella cache le risposte in modo imprevisto. Il contenuto dinamico viene memorizzato nella cache quando la chiave della cache non varia tra gli attributi specifici dell’utente. Dynamic Media e Scene7 richiedono la configurazione del set di regole per generare intestazioni Cache-Control.

Come confermare

  1. Controlla l’intestazione Cache-Control corrente da un browser o con curl. Eseguire curl -I https://example.com/path/to/page.html ed esaminare il valore Cache-Control, ad esempio public, max-age=60, s-maxage=7200 o max-age=300. Conferma che corrisponda a ciò che ti aspetti in produzione. Se l’intestazione manca completamente, applica la configurazione esplicita nella risoluzione.
  2. Controlla se la rete CDN viene memorizzata nella cache solo dall’URL. Richiedi due volte lo stesso URL, in quanto è previsto un output dinamico diverso. Se entrambe le risposte sono identiche, la CDN o Dispatcher memorizza nella cache solo la prima variante.
  3. Ignora le cache per visualizzare l’output di origine. Accodare un parametro di query all’URL, ad esempio https://example.com/page.html?q=123, per ignorare CDN e Dispatcher. La risposta restituisce l’output del publisher di origine, che puoi confrontare con la risposta memorizzata nella cache.

Risoluzione resolution

Per risolvere il problema, segui la procedura riportata di seguito:

  1. Imposta i valori Cache-Control nella configurazione Dispatcher. Aggiorna le regole in cui sono definite le intestazioni Cache-Control. In AEM as a Cloud Service, modifica il codice Dispatcher nell’archivio del progetto e implementalo tramite Cloud Manager. In Managed Services e on-premise, aggiorna la configurazione di Apache e Dispatcher sul server o tramite la pipeline di Cloud Manager. Dopo la distribuzione, eseguire di nuovo curl -I per confermare che le intestazioni riflettano il TTL aggiornato.
  2. Se necessario, configura la memorizzazione nella cache delle varianti dinamiche. Se il contenuto deve variare in base al parametro, includi i parametri di query o i cookie richiesti nella chiave della cache, configurati nelle regole di Dispatcher. Invia più richieste con parametri diversi e conferma che la rete CDN restituisca risposte distinte.
  3. Imposta le intestazioni Cache-Control per le risorse Dynamic Media e Scene7. Utilizzare i set di regole Dynamic Media e Scene7 per impostare l’intestazione Cache-Control con il valore max-age=N desiderato. Eseguire curl -I sull’URL di Dynamic Media, ad esempio is/image/..., e verificare che venga visualizzata l’intestazione Cache-Control.
  4. Cancella o ignora la cache per convalidare il risultato. Dopo aver modificato la configurazione, esegui di nuovo curl -I e conferma che l’intestazione Cache-Control corrisponda al TTL desiderato. Se sono disponibili intestazioni di debug CDN, verifica che la CDN restituisca il TTL aggiornato e conferma le varianti dinamiche richiedendo contenuto per più utenti o parametri.

Se il problema persiste

Contatta il supporto Adobe con l’output curl -I degli URL interessati, i snippet di configurazione Dispatcher che controllano Cache-Control, i dettagli del livello CDN come Akamai o Fastly e una descrizione del comportamento previsto rispetto a quello effettivo.

Lettura correlata

recommendation-more-help
experience-cloud-kcs-help-kbarticles