Soluzione AEM per il caching di personalizzazione ESI con componenti renderizzati lato client
Il contenuto personalizzato potrebbe non comportarsi come previsto quando Edge Side Includes (ESI) viene utilizzato con componenti di cui è stato eseguito il rendering sul client invece di essere restituito come frammenti di HTML con rendering sul server. L’allineamento dell’implementazione con endpoint di frammento sottoposti a rendering server per i casi di utilizzo ESI o l’utilizzo di un approccio lato client per i componenti che rimangono sottoposti a rendering client possono contribuire a risolvere il problema.
Descrizione description
Ambiente
Adobe Experience Manager as a Cloud Service
Problema/Sintomi
- Dopo aver implementato ESI per contenuti personalizzati sulle pagine Adobe Experience Manager as a Cloud Service Publish, gli utenti potrebbero notare un comportamento imprevisto di caching.
- Se un utente anonimo riscalda la cache per una pagina pubblica, un utente autenticato potrebbe successivamente visualizzare la versione anonima di un componente personalizzato, altrimenti potrebbe verificarsi il contrario.
- I componenti interessati possono includere elementi quali intestazioni, aree di abbonamento o altri elementi di pagina che si prevede possano variare in base al contesto dell’utente.
- Nei registri o nel browser non viene visualizzato alcun messaggio di errore chiaro, anche se l’output personalizzato non viene riprodotto come previsto.
- Puoi confermare il problema confrontando la stessa pagina in sessioni anonime e autenticate dopo il riscaldamento della cache e verificando se il componente interessato viene restituito come HTML con rendering sul server nella risposta di origine o riprodotto successivamente da JavaScript lato client.
Risoluzione resolution
Per risolvere il problema, effettua le seguenti operazioni:
-
Controlla se il componente utilizzato per la personalizzazione viene restituito dall’origine come frammento di HTML sottoposto a rendering sul server o riprodotto successivamente nel browser da JavaScript.
-
Se hai bisogno di ESI per assemblare contenuti personalizzati, esponi il componente pertinente come frammento di HTML con rendering server che può essere incluso separatamente. Aggiorna la configurazione ESI o Apache Sling Dynamic Include in modo che faccia riferimento all’endpoint del frammento sottoposto a rendering del server.
-
Se un componente deve rimanere sottoposto a rendering lato client, utilizza un modello di personalizzazione lato client per quel componente invece di affidarti a ESI per assemblarlo.
-
Convalida l’implementazione aggiornata.
- Verifica la pagina sia nelle sessioni anonime che in quelle autenticate.
- Conferma che ogni sessione riceva la versione prevista del componente interessato dopo il riscaldamento della cache.
- Verificare che la risposta di origine contenga l’output di frammento previsto per i componenti che devono essere gestiti da ESI.