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.

Comportamento predefinito per la memorizzazione nella cache

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.

  1. Configurazione vhost Dispatcher: disponibile solo per Publish AEM.
  2. 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.

Browser web
CDN
Descrizione
Cache-Control
Questa intestazione controlla il browser web e la durata della cache CDN.
Surrogate-Control
Questa intestazione controlla la durata della cache CDN.
Scade
Questa intestazione controlla il browser web e la durata della cache CDN.
  • 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:

  1. Nel progetto AEM, individuare il file vhsot desiderato dalla directory dispatcher/src/conf.d/available_vhosts.

  2. 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 directory dispatcher/src/conf.d/available_vhosts. Assicurarsi quindi di creare symlink se non presenti.

  3. 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");
recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69