Come ottimizzare la cache di Dispatcher?

Questo articolo offre istruzioni dettagliate sui diversi modi per ottimizzare la cache del dispatcher. Descrive inoltre i passaggi per abilitare le invalidazioni in stile TTL ("durata" o scadenza), tra cui 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 del dispatcher AEM e su come sfruttarle al meglio. Il dispatcher 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.

Vedi i collegamenti correlati per maggiori dettagli sul dispatcher:

Ottimizzazione della cache di Dispatcher

Di seguito sono riportati alcuni modi per ottimizzare la cache del 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 elimini la cache di un dispatcher che sta distribuendo contenuti live, sarà necessario un massiccio flusso di richieste per tornare ad AEM.  Per questo motivo, la cache del dispatcher non deve mai essere eliminata su un dispatcher live.

  4. Prepara la cache  - Prima di eliminare la cache del 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 del 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 nella configurazione di file .any.  Questa impostazione fa in modo che il dispatcher rispetti le scadenze della cache impostate nell’intestazione di risposta HTTP Cache-Control.  In altre parole, il 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 da AEM, puoi disabilitare in modo sicuro gli agenti di svuotamento del dispatcher nelle istanze di pubblicazione.

Dopo aver disabilitato gli agenti di svuotamento nelle istanze di pubblicazione, è probabile che tu voglia eseguire lo svuotamento della cache del 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  nella configurazione farm .any 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:

Il 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 dell’autore:

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 del 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 devono avere una funzione chiamata "recupero dello svuotamento" abilitata.

Per abilitare il recupero dello svuotamento del dispatcher, procedi come segue:

  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, ad esempio parametri che indicano al 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 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 la funzione del dispatcher denominata “recupero”.  Questa funzione ti consente di inviare un elenco di URI che il 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