Abilitare il caching CDN
Scopri come abilitare la memorizzazione nella cache delle risposte HTTP nella rete CDN di AEM as a Cloud Service. La memorizzazione nella cache delle risposte è controllata da Cache-Control
, Surrogate-Control
o Expires
intestazioni cache di risposta HTTP.
Queste intestazioni di cache sono in genere impostate nelle configurazioni vhost di Dispatcher AEM utilizzando mod_headers
, ma possono anche essere impostate nel codice Java™ personalizzato in esecuzione nello stesso Publish AEM.
Comportamento di caching predefinito
Quando NON sono presenti configurazioni personalizzate, vengono utilizzati i valori predefiniti. Nella schermata seguente è possibile visualizzare il comportamento di caching predefinito per AEM Publish e Author quando viene distribuito un progetto AEM mynewsite
basato su AEM Project Archetype.
{width="800" modal="regular"}
Per ulteriori informazioni, consulta Publish per AEM - Durata predefinita cache e Autore AEM - Durata predefinita cache.
In sintesi, AEM as a Cloud Service memorizza nella cache la maggior parte dei tipi di contenuto (HTML, JSON, JS, CSS e Assets) in AEM Publish e alcuni tipi di contenuto (JS, CSS) in AEM Author.
Abilita caching
Per modificare il comportamento di caching predefinito, puoi aggiornare le intestazioni della cache in due modi.
- Configurazione vhost Dispatcher: disponibile solo per Publish AEM.
- Codice Java™ personalizzato: Disponibile per AEM Publish e Author.
Esaminiamo ognuna di queste opzioni.
Configurazione vhost Dispatcher
Questa opzione è l’approccio consigliato per abilitare il caching, tuttavia è disponibile solo per AEM Publish. Per aggiornare le intestazioni della cache, utilizzare il modulo mod_headers
e la direttiva <LocationMatch>
nel file vhost del server HTTP Apache. La sintassi generale è la seguente:
<LocationMatch "$URL$ || $URL_REGEX$">
# Removes the response header of this name, if it exists. If there are multiple headers of the same name, all will be removed.
Header unset Cache-Control
Header unset Surrogate-Control
Header unset Expires
# Instructs the web browser and CDN to cache the response for 'max-age' value (XXX) seconds. The 'stale-while-revalidate' and 'stale-if-error' attributes controls the stale state treatment at CDN layer.
Header set Cache-Control "max-age=XXX,stale-while-revalidate=XXX,stale-if-error=XXX"
# Instructs the CDN to cache the response for 'max-age' value (XXX) seconds. The 'stale-while-revalidate' and 'stale-if-error' attributes controls the stale state treatment at CDN layer.
Header set Surrogate-Control "max-age=XXX,stale-while-revalidate=XXX,stale-if-error=XXX"
# Instructs the web browser and CDN to cache the response until the specified date and time.
Header set Expires "Sun, 31 Dec 2023 23:59:59 GMT"
</LocationMatch>
Di seguito viene riepilogato lo scopo di ogni intestazione e attributi applicabili per l'intestazione.
- max-age: questo attributo controlla il TTL o "time to live" del contenuto della risposta in secondi.
- stale-while-revalidate: questo attributo controlla il trattamento stale state del contenuto della risposta a livello CDN quando la richiesta ricevuta rientra nel periodo specificato in secondi. Lo stato non aggiornato è il periodo di tempo dopo la scadenza del TTL e prima che la risposta venga riconvalidata.
- stale-if-error: questo attributo controlla il trattamento stale state del contenuto della risposta a livello CDN quando il server di origine non è disponibile e la richiesta ricevuta rientra nel periodo specificato in secondi.
Rivedi i dettagli stabilità e riconvalida per ulteriori informazioni.
Esempio
Per aumentare la durata della cache CDN e del browser Web del tipo di contenuto HTML a 10 minuti senza trattamento dello stato non aggiornato, eseguire la procedura seguente:
-
Nel progetto AEM, individuare il file vhsot desiderato dalla directory
dispatcher/src/conf.d/available_vhosts
. -
Aggiornare il file vhost (ad esempio
wknd.vhost
) come segue:code language-none <LocationMatch "^/content/.*\.(html)$"> # Removes the response header if present Header unset Cache-Control # Instructs the web browser and CDN to cache the response for max-age value (600) seconds. Header set Cache-Control "max-age=600" </LocationMatch>
I file vhost nella directory
dispatcher/src/conf.d/enabled_vhosts
sono symlinks ai file nella directorydispatcher/src/conf.d/available_vhosts
. Assicurarsi quindi di creare symlink se non presenti. -
Distribuisci le modifiche vhost nell'ambiente AEM as a Cloud Service desiderato utilizzando Cloud Manager - Pipeline di configurazione a livello web o Comandi RDE.
Tuttavia, per avere valori diversi per il browser web e la durata della cache CDN, puoi utilizzare l'intestazione Surrogate-Control
nell'esempio precedente. Allo stesso modo, per far scadere la cache a una data e un'ora specifiche, è possibile utilizzare l'intestazione Expires
. Inoltre, utilizzando gli attributi stale-while-revalidate
e stale-if-error
, è possibile controllare il trattamento dello stato non aggiornato del contenuto della risposta. Il progetto WKND dell'AEM ha una configurazione della cache CDN reference stale state treatment.
Allo stesso modo, puoi aggiornare le intestazioni della cache anche per altri tipi di contenuto (JSON, JS, CSS e Assets).
Codice Java™ personalizzato
Questa opzione è disponibile sia per AEM Publish che per Author. Tuttavia, si sconsiglia di abilitare il caching in AEM Author e di mantenere il comportamento di caching predefinito.
Per aggiornare le intestazioni della cache, utilizzare l'oggetto HttpServletResponse
nel codice Java™ personalizzato (servlet Sling, filtro servlet Sling). La sintassi generale è la seguente:
// Instructs the web browser and CDN to cache the response for 'max-age' value (XXX) seconds. The 'stale-while-revalidate' and 'stale-if-error' attributes controls the stale state treatment at CDN layer.
response.setHeader("Cache-Control", "max-age=XXX,stale-while-revalidate=XXX,stale-if-error=XXX");
// Instructs the CDN to cache the response for 'max-age' value (XXX) seconds. The 'stale-while-revalidate' and 'stale-if-error' attributes controls the stale state treatment at CDN layer.
response.setHeader("Surrogate-Control", "max-age=XXX,stale-while-revalidate=XXX,stale-if-error=XXX");
// Instructs the web browser and CDN to cache the response until the specified date and time.
response.setHeader("Expires", "Sun, 31 Dec 2023 23:59:59 GMT");