Come ottimizzare la cache di Dispatcher?

Questo articolo offre istruzioni dettagliate sui diversi modi per ottimizzare la cache di Dispatcher. Descrive inoltre i passaggi per abilitare le invalidazioni in stile TTL ("durata" o scadenza), tra gli altri, la disabilitazione degli agenti di svuotamento del Dispatcher e il recupero dello svuotamento del Dispatcher.

Descrizione description

Ambiente

Adobe Experience Manager

Problemi/Sintomi

Questo articolo si concentra sulle ultime ottimizzazioni di AEM Dispatcher e su come sfruttarle al meglio. Il Dispatcher per AEM è un sistema di caching proxy inverso server progettato per essere utilizzato con Adobe Experience Manager. Può essere installato ed eseguito come modulo all’interno di un software server web esistente. Al momento della stesura di questo articolo, il Il modulo Dispatcher è supportato su Apache HTTP Server, Microsoft IIS e iPlanet.

Risoluzione resolution

Come funziona il caching di Dispatcher?

Al livello più elementare, il dispatcher AEM è un proxy inverso che funziona eseguendo la memorizzazione in cache, lo svuotamento della cache e l’invalidamento della cache.

Per ulteriori informazioni su Dispatcher, consulta i collegamenti correlati:

Ottimizzazione della cache di Dispatcher

Di seguito sono riportati alcuni modi per ottimizzare la cache di Dispatcher:

  1. Memorizza quasi tutto nella cache  : questo significa memorizzare in cache qualsiasi contenuto che verrebbe richiesto più di una volta dagli utenti.

  2. Memorizza nella cache i contenuti personalizzati per diversi periodi di tempo  - Se il tuo sito dispone di contenuti personalizzati, considera l’utilizzo di Apache Sling Dynamic Include nell’applicazione AEM per sfruttare le chiamate Ajax (Asynchronous JavaScript and XML a livello di browser), SSI (Server Side Includes a livello di server web) ed ESI (Edge-side Includes a livello di CDN) per memorizzare in cache diverse parti della pagina per diversi periodi di tempo.

  3. Non eliminare mai la cache del Dispatcher su un Dispatcher live  - Se un Dispatcher distribuisce contenuti live ed elimini la cache, questo causerà un massiccio flusso di richieste per tornare all’AEM.  Per questo motivo, la cache di Dispatcher non deve mai essere eliminata su un Dispatcher live.

  4. Prepara la cache  - Prima di eliminare la cache di Dispatcher, richiama il Dispatcher dal load balancer, elimina la cache ed esegui uno strumento di scansione web per memorizzare in cache i file sul Dispatcher prima di inserirlo nel load balancer.

  5. Memorizza nella cache pagine di errore  - Utilizzo della DispatcherPassError 1 (specifica per server web Apache) per distribuire le pagine di errore, ad esempio 404, dalla cache di Dispatcher.

  6. Comprimi in formato GZip tutti i tipi di file tranne quelli precompressi  - Nel Server Web Apache, mod_deflate potrebbe essere utilizzato, ma assicurati che  Variabile: User-Agent  intestazione non è impostato.  In Microsoft IIS, utilizza la compressione dinamica.

    Esempio di configurazione di Apache (specificando solo determinati tipi di contenuto per evitare tipi di file precompressi):

    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript

  7. Abilita /serveStaleOnError   nella configurazione /cache - Distribuisci il file della cache precedente quando le istanze AEM presentano errori.

  8. Aggiungi /gracePeriod   alla configurazione /cache : definisci il numero di secondi in cui una risorsa obsoleta e invalidata automaticamente può ancora essere distribuita dalla cache dopo l’ultimo evento di pubblicazione di contenuti ("attivazione").  Ciò riduce il numero di richieste che tornano alle istanze di pubblicazione durante un’attività di pubblicazione di contenuti di grandi dimensioni, come ad esempio un’operazione di “attivazione ad albero”.

  9. Aggiungi regole a /ignoreUrlParams  : ignora i parametri querystring non richiesti o utilizzati dall’applicazione.  Ciò consente la memorizzazione nella cache di URL anche quando è presente una querystring.

  10. Memorizza nella cache le intestazioni di risposta Cache-Control e Last-Modified  - Utilizza il  /headers  configurazione per memorizzare nella cache le intestazioni di risposta HTTP  Cache-Control  e  Ultima modifica  (e/o  ETag  se l’invio proviene dall’AEM).  Ciò consente di semplificare e ottimizzare la memorizzazione nella cache a livello di CDN e browser.  La memorizzazione nella cache di queste intestazioni fa sì che solo AEM imposti le intestazioni, non il server web.  Quando esegui questa operazione, inizia a inviare le intestazioni dall’applicazione AEM.

  11. Memorizza il contenuto nella cache il più a lungo possibile  e  ridurre le richieste che tornano all’AEM  : ottimizza le richieste di svuotamento abilitando il recupero dello svuotamento su tutti gli agenti di svuotamento. Vedi la sezione seguente intitolata Recupero dello svuotamento del Dispatcher. Oppure utilizza  /enableTTL  e imposta  Cache-Control: max-age=…  per memorizzare i file nella cache il più a lungo possibile.  Per ulteriori informazioni su questo argomento, vedi di seguito.

Utilizzo dei TTL

A partire dalla versione 4.1.11 di Dispatcher, /enableTTL 1 può essere impostato in qualsiasi configurazione di file.  Questa impostazione fa in modo che Dispatcher rispetti le scadenze della cache impostate nell’intestazione di risposta HTTP Cache-Control.  In altre parole, Dispatcher funzionerà in modo simile a una rete CDN, in cui la forma principale di invalidamento della cache si verifica alla scadenza dei file.  Dopo aver implementato questa impostazione e aver iniziato a inviare  Cache-Control: max-age=…  per tutte le risposte dall’AEM, puoi disabilitare in modo sicuro gli agenti di svuotamento del Dispatcher nelle istanze di pubblicazione.

Dopo aver disabilitato gli agenti di svuotamento sulle istanze di pubblicazione, potrebbe essere comunque necessario svuotare la cache di Dispatcher.  In tal caso, puoi utilizzare ACS Commons - Interfaccia utente di Svuotamento del Dispatcher.  Questo strumento è installato sull’istanza dell’autore e  offre agli utenti un’interfaccia utente in cui è possibile eseguire richieste manuali di svuotamento della cache.

I. Passaggi per abilitare le invalidazioni in stile (“durata” o scadenza):

  1. Modifica il codice sorgente nell’applicazione AEM da inviare  Cache-Control  intestazione e  Ultima modifica  per tutte le richieste in cui non è già impostato.
  2. Installa Dispatcher 4.1.11 o versione successiva.
  3. Imposta  /enableTTL 1  in qualsiasi configurazione farm del sito.
  4. Imposta il  /headers  configurazione per memorizzare in cache  Cache-Control  e  Ultima modifica  intestazioni.
  5. Riavvia il server web.

II. Disattiva gli agenti di svuotamento del Dispatcher sulle istanze di pubblicazione:

Dispatcher utilizza ora l’intestazione Cache-Control per controllare l’invalidamento dei file della cache.  In questo caso, non è più necessario eseguire lo svuotamento del Dispatcher dalle istanze di pubblicazione.

  1. Vai a /etc/replication/agents.publish.html su ogni istanza di pubblicazione.
  2. Vai alla configurazione di ogni agente di svuotamento e disabilita l’agente.

III. Consenti le richieste manuali di svuotamento del Dispatcher dall’istanza di authoring:

Ora che gli agenti di svuotamento sono disabilitati, puoi fare affidamento interamente su  Cache-Control  intestazione per controllare quando il contenuto viene aggiornato sul dispatcher.  Puoi comunque consentire agli utenti di eseguire lo svuotamento manuale della cache di Dispatcher:

  1. Installa ACS Commons - Interfaccia utente di Svuotamento del Dispatcher sull’istanza dell’autore.
  2. Configura gli agenti di svuotamento sull’istanza dell’autore.
  3. In ciascuna configurazione degli agenti, imposta  Triggers  =>   Ignora predefinito  su abilitato. Questa opzione consente di ignorare gli agenti di svuotamento quando gli utenti fanno clic su  (Un)Publish  (Pubblica/Annulla pubblicazione) o  (De)Activate  (Attiva/Disattiva) nell’interfaccia utente di AEM.

Recupero dello svuotamento del Dispatcher

Per ottimizzare le richieste di svuotamento del Dispatcher, tutti gli agenti di svuotamento del Dispatcher devono avere una funzione chiamata "recupero dello svuotamento" abilitata.

Per abilitare il recupero dello svuotamento del dispatcher, effettua le seguenti operazioni:

  1. Vai a  http://aemhost:port/crx/packmgr/index.jsp  e accedi come amministratore.

  2. Scarica il pacchetto da questa pagina.

  3. Carica e installa il pacchetto in Gestione pacchetti.

  4. Vai alla configurazione dell’agente di svuotamento del Dispatcher. Ad esempio,  /etc/replication/agents.author/flush.html

  5. Fai clic su  Modifica

  6. Imposta le opzioni seguenti

    • Tipo di serializzazione  =  Recupero svuotamento del Dispatcher
    • Esteso  =>   Metodo HTTP  =  POST
  7. Fai clic su  Salva

Nota: il pacchetto installato sopra è solo un esempio di base.  Per personalizzare e ottimizzare il recupero dello svuotamento, puoi modificare l’elenco degli URI inviati.  Il codice è open source ed è disponibile in questa pagina.  Il codice aggiunge un elenco di URI al corpo della richiesta, come parametri che indicano a Dispatcher quali percorsi recuperare.  Puoi aggiungere altri percorsi in base ai requisiti dell’applicazione per ottimizzare le funzionalità di memorizzazione nella cache del sito.

Spiegazione dettagliata del recupero dello scarico

Normalmente lo svuotamento di un’istanza di Dispatcher funziona eliminando i file:

  1. Toccare i file .stat
  2. Elimina /content/foo.*
  3. Elimina /content/foo/_jcr_content

Poiché i file vengono eliminati nel passaggio 2, alla richiesta successiva di un file da parte dell’utente, ad esempio /content/foo.html o /content/foo.json, durante il "recupero" del file, le richieste successive per lo stesso file vengono inviate anche alle istanze di pubblicazione fino a quando il file non viene memorizzato nella cache.  In caso di risposte lente o pagine con traffico elevato, come le home page, ciò può causare il flooding a livello di istanza di pubblicazione.

Per risolvere questo problema, abilita una funzione di Dispatcher denominata "recupero".  Questa funzione ti consente di inviare un elenco di URI che Dispatcher deve "recuperare" e sostituire in modo proattivo, invece di eliminarli.

Per una dimostrazione del funzionamento e della configurazione di questa funzione, vai al minuto 22:41-27:05 di questa registrazione della presentazione.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f