Domande frequenti sui principali problemi di AEM Dispatcher

Configurazione di Dispatcher

Introduzione

Cos’è Dispatcher?

Dispatcher è uno strumento di caching e/o bilanciamento del carico di Adobe Experience Manager che consente di realizzare un ambiente di authoring web veloce e dinamico. Per il caching, Dispatcher funziona come parte di un server HTTP, come Apache, allo scopo di memorizzare (o “memorizzare in cache”) la maggior parte del contenuto statico del sito web e di accedere al motore di layout del sito web il più raramente possibile. In un ruolo di bilanciamento del carico, Dispatcher distribuisce le richieste degli utenti (carico) tra le diverse istanze di AEM (rendering).

Per il caching, il modulo Dispatcher utilizza la funzionalità del server web che consente di gestire il contenuto statico. Dispatcher inserisce i documenti memorizzati in cache nella directory principale dei documenti del server web.

Come viene eseguito il caching in Dispatcher?

Dispatcher utilizza la funzionalità del server web che consente di gestire il contenuto statico. Dispatcher archivia i documenti memorizzati in cache nella directory principale dei documenti del server web. In Dispatcher sono disponibili due metodi principali per aggiornare il contenuto della cache quando vengono apportate modifiche al sito web.

  • Aggiornamenti del contenuto: le pagine modificate e i file che sono direttamente associati ad esse vengono rimossi.
  • Annullamento automatico della validità: le parti della cache che potrebbero risultare obsolete dopo un aggiornamento vengono invalidate automaticamente. Ad esempio, le pagine ritenute obsolete vengono chiaramente contrassegnate, ma non eliminate.

Quali sono i vantaggi del bilanciamento del carico?

Il bilanciamento del carico distribuisce le richieste degli utenti (carico) tra le diverse istanze AEM. L’elenco che segue descrive i vantaggi del bilanciamento del carico:

  • Maggiore potenza di elaborazione: in pratica Dispatcher condivide le richieste di documenti con diverse istanze di AEM. Poiché ciascuna istanza ha meno documenti da elaborare, i tempi di risposta sono più rapidi. Dispatcher mantiene statistiche interne per ogni categoria di documenti, in modo da poter stimare il carico e distribuire le query in modo efficiente.
  • Maggiore copertura in caso di errore: se Dispatcher non riceve risposte da un’istanza, inoltra automaticamente le richieste a una delle altre istanze. Pertanto, se un’istanza risulta non disponibile, l’unico effetto è un rallentamento del sito, proporzionato alla potenza di elaborazione persa.
NOTA

Per ulteriori dettagli, vedi la pagina Panoramica di Dispatcher

Installazione e configurazione

Da dove posso scaricare il modulo Dispatcher?

Puoi scaricare il più recente modulo Dispatcher dalla pagina Note sulla versione di Dispatcher.

Come si installa il modulo Dispatcher?

Visita la pagina Installazione di Dispatcher.

Come si configura il modulo Dispatcher?

Visita la pagina Configurazione di Dispatcher.

Come si configura Dispatcher per l’istanza Autore?

Per i passaggi dettagliati, vedi Utilizzo di Dispatcher con un’istanza Autore.

Come si configura Dispatcher con più domini?

Puoi configurare CQ Dispatcher con più domini, purché i domini soddisfino le seguenti condizioni:

  • Il contenuto web di entrambi i domini deve essere memorizzato in un unico archivio AEM
  • I file nella cache di Dispatcher possono essere invalidati separatamente per ciascun dominio

Per ulteriori informazioni, leggi Utilizzo di Dispatcher con più domini.

Come si configura Dispatcher in modo che tutte le richieste di un utente vengano instradate alla stessa istanza Publish?

Puoi utilizzare la funzione connessioni permanenti, che garantisce che tutti i documenti di un utente vengano elaborati sulla stessa istanza di AEM. Questa funzione è importante, se utilizzi pagine e dati di sessione personalizzati. I dati vengono memorizzati nell’istanza. Pertanto, le successive richieste dello stesso utente devono ritornare a quell’istanza oppure i dati andranno persi.

Poiché le connessioni permanenti limitano la capacità di Dispatcher di ottimizzare le richieste, è opportuno utilizzare questo approccio solo se necessario. È possibile specificare la cartella che contiene i documenti “permanenti”, in modo da garantire che tutti i documenti di quella cartella vengano elaborati nella stessa istanza di ciascun utente.

Posso utilizzare connessioni permanenti e caching insieme?

Per la maggior parte delle pagine che utilizzano connessioni permanenti, devi disattivare il caching. In caso contrario, a tutti gli utenti viene visualizzata la stessa istanza della pagina, indipendentemente dal contenuto della sessione.

Per alcune applicazioni, può essere possibile utilizzare sia le connessioni permanenti che il caching. Ad esempio, se visualizzi un modulo che scrive i dati in una sessione, è possibile utilizzare le connessioni permanenti e il caching insieme.

Un’istanza di Dispatcher e un’istanza di AEM Publish possono risiedere sulla stessa macchina fisica?

Sì, se la macchina è sufficientemente potente. Tuttavia, si consiglia di installare Dispatcher e l’istanza di AEM Publish su macchine diverse.

In genere, l’istanza Publish risiede all’interno del firewall e Dispatcher risiede nella DMZ. Se decidi di installare l’istanza Publish e Dispatcher sulla stessa macchina fisica, accertati che le impostazioni del firewall vietino l’accesso diretto all’istanza Publish da reti esterne.

Posso memorizzare in cache solo file con estensioni specifiche?

Sì. Ad esempio, se vuoi memorizzare in cache solo file GIF, specifica *.gif nella sezione cache del file di configurazione dispatcher.any.

Come si eliminano i file dalla cache?

Puoi eliminare i file dalla cache utilizzando una richiesta HTTP. Quando viene ricevuta la richiesta HTTP, Dispatcher elimina i file dalla cache. Dispatcher memorizza nuovamente in cache i file solo quando riceve dal client una richiesta per la pagina. Questa modalità di eliminazione dei file memorizzati in cache è appropriata per i siti web che hanno poche probabilità di ricevere richieste simultanee per la stessa pagina.

La richiesta HTTP ha la seguente sintassi:

POST /dispatcher/invalidate.cache HTTP/1.1
CQ-Action: Activate
CQ-Handle: path-pattern
Content-Length: 0

Dispatcher elimina i file e le cartelle memorizzati in cache con nomi che corrispondono al valore dell’intestazione CQ-Handle. Ad esempio, il CQ-Handle /content/geomtrixx-outdoors/en corrisponde ai seguenti elementi:

Tutti i file (con qualsiasi estensione) denominati en nella directory geometrixx-outdoors
Qualunque directory denominata _jcr_content sotto la directory en (che, se esiste, contiene i rendering memorizzati in cache dei sottonodi della pagina)
La directory en verrà eliminata solo se CQ-Action è Delete o Deactivate.

Per ulteriori dettagli su questo argomento, vedi Annullamento manuale della validità della cache di Dispatcher.

Come si implementa il caching sensibile alle autorizzazioni?

Visita la pagina Caching di contenuto protetto.

Come posso proteggere le comunicazioni tra le istanze Dispatcher e CQ?

Visita le pagine Elenco di controllo di protezione di Dispatcher e Elenco di controllo di protezione di AEM.

Problema di Dispatcher jcr:content modificato in jcr%3acontent

Domanda: di recente abbiamo riscontrato un problema a livello di Dispatcher, in cui una delle chiamate AJAX che stava richiamando dati dall’archivio CQ jcr:content in Dispatcher è stata codificata come jcr%3acontent causando un set di risultati errato.

Risposta: utilizza il metodo ResourceResolver.map() per ottenere un URL “descrittivo” da usare/inviare per ottenere richieste da Dispatcher e anche risolvere il relativo problema di caching. Il metodo map() codifica i due punti : in caratteri di sottolineatura e il metodo resolve() li decodifica nel formato leggibile SLING JCR. È necessario usare il metodo map() per generare l’URL utilizzato nella chiamata AJAX.

Ulteriori informazioni: https://sling.apache.org/documentation/the-sling-engine/mappings-for-resource-resolution.html#namespace-mangling

Dispatcher Flush

Come si configurano gli agenti di Dispatcher Flush su un’istanza Publish?

Visita la pagina Replica.

Come si risolvono i problemi di flushing di Dispatcher?

Vedi questo articolo per la risoluzione dei problemi che risponde alle seguenti domande:

  • Come si risolve una situazione in cui nessun contenuto viene salvato nella cache di Dispatcher?
  • Come si risolve una situazione in cui i file della cache non vengono aggiornati?
  • Come si risolve una situazione in cui non funziona nulla che sia correlato a Dispatcher Flush?

Se le operazioni di eliminazione provocano il flush di Dispatcher, utilizza la soluzione suggerita in questo post di blog della community scritto da Sensei Martin.

Come si eliminano le risorse DAM dalla cache di Dispatcher?

È possibile utilizzare la funzione “replica a catena”. Quando questa funzione è abilitata, l’agente di Dispatcher Flush invia una richiesta di flushing nel momento in cui viene ricevuta una replica inviata dall’Autore.

Per abilitare questa funzione:

  1. Segui questi passaggi per creare agenti Flush su Publish
  2. Vai alla configurazione di ciascuno di questi agenti e nella scheda Attivatori seleziona la casella Alla ricezione.

Varie

In che modo Dispatcher determina se un documento è aggiornato?
Per determinare se un documento è aggiornato, Dispatcher esegue le azioni sotto riportate:

Verifica se il documento è soggetto ad annullamento automatico della validità. Se non lo è, il documento viene considerato aggiornato.
Se il documento è configurato per l’annullamento automatico della validità, Dispatcher controlla se è più o meno recente dell’ultima modifica disponibile. Se è meno recente, Dispatcher richiede la versione corrente dall’istanza di AEM e sostituisce la versione nella cache.

In che modo Dispatcher restituisce i documenti?

Puoi definire se Dispatcher memorizza in cache un documento utilizzando il file di configurazione di Dispatcher, dispatcher.any. Dispatcher confronta la richiesta con l’elenco dei documenti memorizzabili in cache. Se il documento non è incluso in questo elenco, Dispatcher richiede il documento dall’istanza di AEM.

La proprietà /rules definisce quali documenti vengono memorizzati in cache in base al percorso del documento. Indipendentemente dalla proprietà /rules, Dispatcher non memorizza mai in cache un documento nelle seguenti circostanze:

  • Se l’URI della richiesta contiene un punto interrogativo (?).
  • In genere, ciò indica una pagina dinamica, ad esempio il risultato di una ricerca che non richiede di essere memorizzata in cache.
  • Se manca l’estensione del file.
  • Il server web ha bisogno dell’estensione per determinare il tipo di documento (tipo MIME).
  • Se l’intestazione di autenticazione è impostata (configurabile).
  • Se l’istanza AEM risponde con le seguenti intestazioni:
    • no-cache
    • no-store
    • must-revalidate

Dispatcher archivia sul server web i file memorizzati in cache come se facessero parte di un sito web statico. Se un utente richiede un documento memorizzato in cache, Dispatcher verifica se questo documento esiste nel file system del server web. In caso affermativo, Dispatcher restituisce i documenti. In caso contrario, Dispatcher richiede il documento all’istanza AEM.

NOTA

Dispatcher può memorizzare in cache i metodi GET o HEAD (per l’intestazione HTTP). Per ulteriori informazioni sul caching delle intestazioni di risposta, vedi la sezione Caching delle intestazioni di risposta HTTP.

Posso implementare più Dispatcher in una configurazione?

Sì. In questi casi, assicurati che entrambe le istanze di Dispatcher possano accedere direttamente al sito web di AEM. Un’istanza di Dispatcher non può gestire le richieste provenienti da un’altra istanza di Dispatcher.

In questa pagina