Pubblicazione AEM

Il servizio Publish dell’AEM ha due livelli di caching primari, AEM as a Cloud Service CDN e AEM Dispatcher. Facoltativamente, è possibile inserire una rete CDN gestita dal cliente davanti alla rete CDN di AEM as a Cloud Service. La rete CDN di AEM as a Cloud Service fornisce una distribuzione ai margini dei contenuti, garantendo che le esperienze vengano distribuite agli utenti di tutto il mondo con una latenza ridotta. AEM Dispatcher fornisce il caching direttamente di fronte al Publish AEM e viene utilizzato per mitigare il carico inutile sul Publish AEM stesso.

Diagramma panoramica sulla memorizzazione nella cache di Publish per AEM

CDN

La memorizzazione in cache della rete CDN di AEM as a Cloud Service è controllata dalle intestazioni cache di risposta HTTP e ha lo scopo di memorizzare in cache il contenuto per ottimizzare il bilanciamento tra aggiornamento e prestazioni. La rete CDN si trova tra l’utente finale e il Dispatcher dell’AEM e viene utilizzata per memorizzare in cache i contenuti il più vicino possibile all’utente finale, garantendo un’esperienza performante.

CDN Publish AEM

La configurazione della modalità in cui la rete CDN memorizza in cache il contenuto è limitata all’impostazione delle intestazioni della cache sulle risposte 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.

Quando vengono memorizzate nella cache le richieste/risposte HTTP?

AEM as a Cloud Service CDN memorizza nella cache solo le risposte HTTP e deve soddisfare tutti i seguenti criteri:

  • Lo stato della risposta HTTP è 2xx o 3xx
  • Il metodo di richiesta HTTP è GET o HEAD
  • È presente almeno una delle seguenti intestazioni di risposta HTTP: Cache-Control, Surrogate-Control o Expires
  • La risposta HTTP può essere di qualsiasi tipo di contenuto, inclusi file HTML, JSON, CSS, JS e file binari.

Per impostazione predefinita, le risposte HTTP non memorizzate nella cache da AEM Dispatcher dispongono automaticamente di intestazioni cache di risposta HTTP rimosse per evitare la memorizzazione nella cache in CDN. Questo comportamento può essere accuratamente ignorato utilizzando mod_headers con la direttiva Header always set ... quando necessario.

Cosa viene memorizzato nella cache?

AEM as a Cloud Service CDN memorizza in cache quanto segue:

  • Corpo della risposta HTTP
  • Intestazioni di risposta HTTP

In genere, una richiesta/risposta HTTP per un singolo URL viene memorizzata nella cache come oggetto singolo. Tuttavia, la rete CDN può gestire la memorizzazione nella cache di più oggetti per un singolo URL quando l'intestazione Vary è impostata sulla risposta HTTP. Evita di specificare Vary nelle intestazioni i cui valori non hanno un set di valori strettamente controllato, in quanto ciò può causare molti errori nella cache, riducendo il rapporto di hit della cache. Per supportare la memorizzazione nella cache di richieste diverse in AEM Dispatcher, consulta la documentazione sulla memorizzazione nella cache delle varianti.

Durata cache cdn-cache-life

La rete CDN di Publish per AEM è basata su TTL (time-to-live), il che significa che la durata della cache è determinata dalle intestazioni di risposta HTTP Cache-Control, Surrogate-Control o Expires. Se le intestazioni di cache della risposta HTTP non sono impostate dal progetto e sono soddisfatti i criteri di idoneità, Adobe imposta una durata predefinita della cache di 10 minuti (600 secondi).

Di seguito è illustrato come le intestazioni di cache influiscono sulla durata della cache CDN:

  • L'intestazione di risposta HTTP Cache-Control indica al browser Web e alla rete CDN per quanto tempo memorizzare la risposta nella cache. Il valore è in secondi. Ad esempio, Cache-Control: max-age=3600 indica al browser Web di memorizzare la risposta nella cache per un'ora. Questo valore viene ignorato dalla rete CDN se è presente anche l'intestazione di risposta HTTP Surrogate-Control.
  • L'intestazione di risposta HTTP Surrogate-Control indica alla rete CDN dell'AEM per quanto tempo memorizzare la risposta nella cache. Il valore è in secondi. Ad esempio, Surrogate-Control: max-age=3600 comunica al CDN di memorizzare la risposta nella cache per un'ora.
  • L'intestazione di risposta HTTP Expires indica alla rete CDN (e al browser Web) dell'AEM per quanto tempo la risposta memorizzata nella cache è valida. Il valore è una data. Ad esempio, Expires: Sat, 16 Sept 2023 09:00:00 EST indica al browser Web di memorizzare la risposta nella cache fino alla data e all'ora specificate.

Utilizza Cache-Control per controllare la durata della cache quando è la stessa sia per il browser che per la rete CDN. Utilizzare Surrogate-Control quando il browser Web deve memorizzare la risposta nella cache per una durata diversa da quella della rete CDN.

Durata predefinita della cache

Se una risposta HTTP è idonea per il caching di Dispatcher AEM per qualificatori superiori, i valori predefiniti sono i seguenti, a meno che non sia presente una configurazione personalizzata.

Tipo di contenuto
Durata predefinita cache CDN
HTML/JSON/XML
5 minuti
Assets (immagini, video, documenti e così via)
10 minuti
Query persistenti (JSON)
2 ore
Librerie client (JS/CSS)
30 giorni
Altro
Non memorizzato in cache

Personalizzare le regole della cache

La configurazione della modalità con cui la rete CDN memorizza in cache il contenuto è limitata all'impostazione delle intestazioni della cache nelle risposte HTTP. Queste intestazioni di cache sono in genere impostate nelle configurazioni di AEM Dispatcher vhost utilizzando mod_headers, ma possono anche essere impostate nel codice Java™ personalizzato in esecuzione nello stesso AEM Publish.

Dispatcher AEM

AEM Publish AEM Dispatcher

Quando vengono memorizzate nella cache le richieste/risposte HTTP?

Le risposte HTTP per le richieste HTTP corrispondenti vengono memorizzate nella cache quando sono soddisfatti tutti i seguenti criteri:

  • Il metodo di richiesta HTTP è GET o HEAD

    • HEAD richieste HTTP memorizzano nella cache solo le intestazioni di risposta HTTP. Non hanno organi di risposta.
  • Lo stato della risposta HTTP è 200

  • La risposta HTTP NON è per un file binario.

  • Il percorso URL della richiesta HTTP termina con un'estensione, ad esempio: .html, .json, .css, .js, ecc.

  • La richiesta HTTP non contiene autorizzazioni e non è autenticata dall’AEM.

  • La richiesta HTTP non contiene parametri di query.

    • Tuttavia, la configurazione di Parametri di query ignorati consente di memorizzare nella cache/gestire le richieste HTTP con i parametri di query ignorati.
  • Il percorso della richiesta HTTP corrisponde a una regola Dispatcher consentita e non corrisponde a una regola nega.

  • La risposta HTTP non ha una delle seguenti intestazioni di risposta HTTP impostate da AEM Publish:

    • no-cache
    • no-store
    • must-revalidate

Cosa viene memorizzato nella cache?

Il Dispatcher AEM memorizza nella cache quanto segue:

  • Corpo della risposta HTTP

  • Intestazioni di risposta HTTP specificate nella configurazione delle intestazioni cache di Dispatcher. Vedere la configurazione predefinita fornita con Archetipo progetto AEM.

    • Cache-Control
    • Content-Disposition
    • Content-Type
    • Expires
    • Last-Modified
    • X-Content-Type-Options

Durata cache

AEM Dispatcher memorizza nella cache le risposte HTTP utilizzando i seguenti approcci:

Durata predefinita della cache

Se una risposta HTTP è idonea per il caching di Dispatcher AEM per qualificatori superiori, i valori predefiniti sono i seguenti, a meno che non sia presente una configurazione personalizzata.

Tipo di contenuto
Durata predefinita cache CDN
HTML/JSON/XML
Fino all’annullamento della validità
Assets (immagini, video, documenti e così via)
Mai
Query persistenti (JSON)
1 minuto
Librerie client (JS/CSS)
30 giorni
Altro
Fino all’annullamento della validità

Personalizzare le regole della cache

La cache del Dispatcher AEM può essere configurata tramite la configurazione Dispatcher che include:

  • Cosa viene memorizzato nella cache
  • Quali parti della cache vengono invalidate al momento della pubblicazione o dell’annullamento della pubblicazione
  • Quali parametri di query della richiesta HTTP vengono ignorati durante la valutazione della cache
  • Quali intestazioni di risposta HTTP vengono memorizzate nella cache
  • Attivazione o disattivazione del caching TTL
  • … e molto altro

Se si utilizza mod_headers per impostare le intestazioni della cache, la configurazione di vhost non influirà sul caching di Dispatcher (basato su TTL), in quanto queste vengono aggiunte alla risposta HTTP dopo che l'AEM Dispatcher elabora la risposta. Per influenzare il caching di Dispatcher tramite le intestazioni di risposta HTTP, è necessario un codice Java™ personalizzato in esecuzione in AEM Publish che imposti le intestazioni di risposta HTTP appropriate.

recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69