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.
{align="center"}
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.
{align="center"}
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
o3xx
- Il metodo di richiesta HTTP è
GET
oHEAD
- È presente almeno una delle seguenti intestazioni di risposta HTTP:
Cache-Control
,Surrogate-Control
oExpires
- 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 HTTPSurrogate-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.
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
{align="center"}
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
oHEAD
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.
- Tuttavia, la memorizzazione nella cache delle richieste autenticate può essere abilitata a livello globale o in modo selettivo tramite memorizzazione nella cache sensibile alle autorizzazioni.
-
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:
- Fino a quando l’annullamento della validità non viene attivato tramite meccanismi quali la pubblicazione o l’annullamento della pubblicazione del contenuto.
- TTL (time-to-live) quando è configurato in modo esplicito nella configurazione di Dispatcher. Vedere la configurazione predefinita in Archetipo progetto AEM esaminando la configurazione
enableTTL
.
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.
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.