Le versioni di Dispatcher sono indipendenti da AEM. Potresti essere stato reindirizzato a questa pagina se hai seguito un collegamento alla documentazione di Dispatcher incorporato nella documentazione di una versione precedente di AEM.
Dispatcher è uno strumento di caching e/o bilanciamento del carico di Adobe Experience Manager che può essere utilizzato insieme a un server web di classe enterprise.
Il processo di distribuzione di Dispatcher è indipendente dal server web e dalla piattaforma del sistema operativo scelti:
Per capire meglio come funziona Dispatcher con AEM:
Utilizza le seguenti informazioni come richiesto:
Dispatcher viene utilizzato in genere per memorizzare in cache le risposte di un’istanza AEM Publish, per aumentare la capacità di risposta e la sicurezza del sito web pubblicato che interfaccia con l’esterno. La maggior parte della discussione è incentrata su questo caso specifico.
È però anche possibile utilizzare Dispatcher per incrementare la reattività dell’istanza Autore, in particolare se il sito web viene modificato e aggiornato da un numero elevato di utenti. Per i dettagli specifici di questo caso, vedi Utilizzo di Dispatcher con Author Server più avanti.
Sono due gli approcci di base alla pubblicazione sul web:
Dispatcher permette di realizzare un ambiente al tempo stesso veloce e dinamico. Viene utilizzato parte come parte un server HTML statico, ad esempio Apache, con lo scopo di:
Questo significa che:
Il contenuto statico viene gestito in modo semplice e rapido analogamente a un server web statico;è inoltre possibile utilizzare gli strumenti di gestione e sicurezza disponibili per i server web statici.
Il contenuto dinamico viene generato in base alle necessità, senza rallentare il sistema più del necessario.
Dispatcher contiene meccanismi per generare e aggiornare il codice HTML statico in base al contenuto del sito dinamico. È possibile specificare in dettaglio quali documenti vengono archiviati come file statici e quali vengono sempre generati in modo dinamico.
Questa sezione illustra i principi alla base di tale funzionamento.
Un server web statico, come Apache o IIS, viene utilizzato per distribuire file HTML statici ai visitatori del sito web. Le pagine statiche vengono create una sola volta, quindi a ogni richiesta verrà distribuito lo stesso contenuto.
Questo processo è molto semplice e quindi estremamente efficiente. Se un visitatore richiede un file, ad esempio una pagina HTML, in genere il file viene prelevato direttamente dalla memoria o nel peggiore dei casi viene letto dall’unità locale. I server web statici sono disponibili da molto tempo, per cui esistono già numerosi strumenti per la gestione dell’amministrazione e della sicurezza; sono inoltre perfettamente integrati con le infrastrutture di rete.
Se utilizzi un server di gestione dei contenuti, come AEM, la richiesta di un visitatore viene elaborata da un motore di layout avanzato. Il motore legge il contenuto da un archivio che, insieme a stili, formati e diritti di accesso, trasforma il contenuto in un documento personalizzato in base alle esigenze e ai diritti del visitatore.
Questo ti permette di creare contenuti più ricchi e dinamici che aumentano la flessibilità e la funzionalità del tuo sito web. Tuttavia, il motore di layout richiede una potenza di elaborazione maggiore rispetto a un server statico, pertanto questa configurazione potrebbe essere soggetta a rallentamenti, se molti visitatori utilizzano il sistema.
Directory della cache Per il caching il modulo Dispatcher utilizza la funzionalità del server web che consente di distribuire contenuto statico. Dispatcher inserisce i documenti memorizzati in cache nella directory principale dei documenti del server web.
Se manca la configurazione per il caching delle intestazioni HTTP, Dispatcher archivia solo il codice HTML della pagina e non le intestazioni HTTP. Questo comportamento può costituire un problema, se utilizzi codifiche diverse all’interno del sito web, in quanto queste codifiche potrebbero andare perse. Per abilitare il caching delle intestazioni HTTP, vedi Configurazione della cache di Dispatcher.
Se la directory principale dei documenti del server web si trova su Network Attached Storage (NAS), potresti riscontrare un degrado delle prestazioni. Inoltre, quando una directory principale dei documenti che si trova nel NAS viene condivisa tra più server web, possono verificarsi blocchi intermittenti durante l’esecuzione di azioni di replica.
Dispatcher archivia il documento memorizzato in cache in una struttura uguale all’URL richiesto.
Il sistema operativo può prevedere limitazioni per la lunghezza del nome file, ad esempio se un URL contiene molti selettori.
In Dispatcher sono disponibili due metodi principali per aggiornare il contenuto della cache quando vengono apportate modifiche al sito web.
In un aggiornamento del contenuto uno o più documenti AEM cambiano. AEM invia una richiesta di distribuzione del contenuto (syndication) a Dispatcher, che aggiorna la cache di conseguenza:
Tieni presente le seguenti considerazioni:
Con l’annullamento automatico della validità, parti della cache vengono automaticamente invalidate, ma non viene fisicamente eliminato alcun file. A ogni aggiornamento del contenuto, il cosiddetto statfile viene toccato e la marca temporale corrispondente rispecchia quindi l’ultimo aggiornamento del contenuto.
In Dispatcher è disponibile un elenco di file soggetti ad annullamento automatico della validità. Quando viene richiesto un documento da tale elenco, Dispatcher confronta la data del documento memorizzato in cache con la marca temporale dello statfile:
Anche in questo caso, tieni presente le seguenti considerazioni:
Nel file di configurazione puoi definire quali documenti Dispatcher deve memorizzare in cache. 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.
Dispatcher richiede sempre il documento direttamente dall’istanza di AEM nei seguenti casi:
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.
Dispatcher archivia nel server web i file memorizzati in cache come se facessero parte di un sito web statico. Se un utente richiede un documento memorizzabile in cache, Dispatcher controlla se tale documento è presente nel file system del server web:
Per verificare se un documento è aggiornato, Dispatcher esegue due passaggi:
I documenti senza annullamento automatico della validità rimangono nella cache fino a quando non vengono fisicamente eliminati, ad esempio tramite un aggiornamento del contenuto del sito web.
Per bilanciamento del carico si intende la distribuzione del carico di elaborazione del sito web tra più istanze di AEM.
I vantaggi di questa pratica sono i seguenti:
Maggiore potenza di elaborazione
In pratica Dispatcher condivide le richieste di documenti tra più istanze di AEM. Poiché il numero di documenti da elaborare per ogni istanza è ridotto, i tempi di risposta risultano inferiori. 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 non riceve risposte da un’istanza, Dispatcher inoltrerà 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, ma l’elaborazione di tutti i servizi non subirà interruzioni.
È anche possibile gestire siti web diversi sullo stesso server web statico.
Mentre il bilanciamento del carico consente di distribuire il carico in modo efficiente, la memorizzazione in cache contribuisce a ridurlo. Prova quindi a ottimizzare il caching e ridurre il carico complessivo prima di configurare il bilanciamento del carico. Un caching appropriato può contribuire a migliorare le prestazioni del load balancer o rendere superfluo il bilanciamento del carico.
Anche se un’unica istanza di Dispatcher è in genere in grado di assorbire la capacità delle istanze Publish disponibili, per alcune rare applicazioni può essere utile bilanciare ulteriormente il carico tra due istanze di Dispatcher. È necessario prestare particolare attenzione alle configurazioni con più istanze di Dispatcher, poiché un’ulteriore istanza di Dispatcher implica un aumento del carico sulle istanze Publish disponibili e può facilmente causare un calo delle prestazioni nella maggior parte delle applicazioni.
Dispatcher mantiene statistiche interne sulla velocità di elaborazione dei documenti in ogni istanza di AEM. In base a questi dati, Dispatcher può stimare quale istanza è in grado di rispondere più rapidamente a una richiesta e quindi riserva il tempo di elaborazione necessario a tale istanza.
I tempi medi di completamento dei diversi tipi di richieste possono essere diversi, pertanto Dispatcher consente di specificare le categorie dei documenti. Queste vengono quindi considerate per calcolare i tempi stimati. Ad esempio, puoi fare una distinzione tra pagine HTML e immagini, poiché i tempi di risposta tipici potrebbero essere molto diversi.
Se utilizzi una funzione di ricerca complessa, puoi creare una nuova categoria per le query di ricerca. In questo modo Dispatcher può inviare le query di ricerca all’istanza che risponde più velocemente e ciò impedisce a un’istanza più lenta di rimanere in sospeso quando riceve diverse query di ricerca “onerose”, mentre altre istanze ricevono altre richieste “meno onerose”.
Con le connessioni permanenti è possibile garantire che i documenti di un utente siano tutti composti nella stessa istanza di AEM. Questa caratteristica è importante, se utilizzi pagine personalizzate e dati di sessione. I dati vengono archiviati nell’istanza, per cui le richieste successive dello stesso utente devono tornare a quell’istanza, altrimenti i dati andranno persi.
Poiché con le connessioni permanenti la capacità di Dispatcher di ottimizzare le richieste risulta limitata, è consigliabile utilizzarle solo quando necessario. Puoi specificare la cartella che contiene i documenti “permanenti”, in modo da garantire che tutti i documenti in tale cartella vengano composti nella stessa istanza per ogni utente.
Per la maggior parte delle pagine che utilizzano connessioni permanenti è necessario disattivare la cache, altrimenti la pagina risulterà uguale per tutti gli utenti, indipendentemente dal contenuto della sessione.
Per alcune applicazioni, può essere possibile utilizzare sia connessioni permanenti che il caching, ad esempio, se si visualizza un modulo che scrive i dati nella sessione.
In configurazioni complesse è possibile utilizzare più istanze di Dispatcher. Ad esempio, puoi utilizzare:
In questo caso, accertati che ogni richiesta venga gestita tramite un’unica istanza di Dispatcher. Un’istanza di Dispatcher non gestisce le richieste provenienti da un’altra istanza di Dispatcher. Accertati pertanto che entrambe le istanze di Dispatcher accedano direttamente al sito web di AEM.
Una rete CDN (Content Delivery Network), come Akamai Edge Delivery o Amazon Cloud Front, consente di distribuire contenuto da una località vicina all’utente finale. Ciò permette di:
In quanto componente dell’infrastruttura HTTP, una rete CDN funziona in modo analogo a Dispatcher: quando un nodo della rete CDN riceve una richiesta, la distribuisce dalla propria cache, se possibile, ovvero se la risorsa è disponibile nella cache ed è valida. In caso contrario, si rivolge al server successivo più vicino per recuperare la risorsa e memorizzarla in cache per eventuali ulteriori richieste.
Il “server successivo più vicino” dipende dalla configurazione specifica. Ad esempio, in una configurazione di Akamai il percorso della richiesta può essere il seguente:
Nella maggior parte dei casi, Dispatcher è il server successivo che può distribuire il documento da una cache e influire sulle intestazioni di risposta restituite al server della rete CDN.
Sono disponibili diversi modi per controllare per quanto tempo una rete CDN memorizzerà in cache una risorsa prima che venga recuperata da Dispatcher.
Configurazione esplicita
Configura per quanto tempo determinate risorse vengono mantenute nella cache della rete CDN, a seconda del tipo MIME, dell’estensione, del tipo di richiesta e così via.
Intestazioni di scadenza e controllo della cache
La maggior parte delle reti CDN rispetta le intestazioni HTTP Expires:
e Cache-Control:
se inviate dal server upstream. A questo scopo è possibile usare il modulo Apache mod_expires.
Annullamento manuale della validità
Le reti CDN consentono di rimuovere risorse dalla cache tramite interfacce web.
Annullamento della validità basato su API
La maggior parte delle reti CDN offre anche un’API REST e/o SOAP che consente di rimuovere le risorse dalla cache.
In una tipica configurazione di AEM, la configurazione per estensione e/o per percorso, ottenibile tramite i punti 1 e 2 di cui sopra, offre la possibilità di impostare periodi di caching ragionevoli per risorse utilizzate spesso non soggette a modifiche frequenti, come immagini di progettazione e librerie client. Quando vengono distribuite nuove versioni, in genere è necessario un annullamento manuale della validità.
Se si utilizza questo approccio per memorizzare in cache il contenuto gestito, le modifiche apportate al contenuto sono visibili solo agli utenti finali dopo la scadenza del periodo di caching configurato e il documento viene di nuovo recuperato da Dispatcher.
Per un controllo più granulare, l’annullamento della validità basato su API consente di annullare la validità della cache di una rete CDN appena viene annullata la validità della cache di Dispatcher. In base all’API della rete CDN, puoi implementare versioni personalizzate di ContentBuilder e TransportHandler (se l’API non è basata su REST) e configurare un’agente di replica che le userà per annullare la validità della cache della rete CDN.
Vedi anche la presentazione su Sicurezza di AEM (CQ) Dispatcher e caching di rete CDN e browser nonché la presentazione registrata sul caching in Dispatcher.
Se utilizzi AEM con l’interfaccia utente touch, non devi memorizzare in cache il contenuto dell’istanza Autore. Se è stato abilitato il caching per l’istanza Autore, devi disattivarlo ed eliminare il contenuto della directory della cache. Per disattivare il caching, devi modificare il file author_dispatcher.any
e modificare la proprietà /rule
della sezione /cache
nel modo seguente:
/rules
{
/0000
{ /type "deny" /glob "*"}
}
Puoi utilizzare un’istanza di Dispatcher prima di un’istanza Autore per migliorare le prestazioni di authoring. Per configurare un’istanza di Dispatcher per l’authoring, effettua le seguenti operazioni:
Installa un’istanza di Dispatcher su un server web (può essere un server web Apache o IIS; consulta Installazione di Dispatcher).
Puoi testare l’istanza di Dispatcher appena installata in base a un’istanza AEM Publish funzionante per verificare che sia stata raggiunta un’installazione fondamentalmente corretta.
A questo punto accertati che Dispatcher possa connettersi all’istanza Autore tramite TCP/IP.
Sostituisci il file dispatcher.any di esempio con il file author_dispatcher.any fornito con il download di Dispatcher.
Apri il file author_dispatcher.any
in un editor di testo e apporta le seguenti modifiche:
/hostname
e /port
della sezione /renders
in modo che puntino all’istanza Autore./docroot
della sezione /cache
in modo che punti a una directory cache. Se utilizzi AEM con l’interfaccia utente touch, vedi l’avviso riportato sopra.Elimina tutti i file esistenti nella directory /cache
> /docroot
configurata in precedenza.
Riavvia il server web.
Tieni presente che con la configurazione fornita di author_dispatcher.any
, quando installi un pacchetto di funzioni, un aggiornamento rapido o un pacchetto di codice dell’applicazione CQ5 che interessa qualunque contenuto presente in /libs
o /apps
, devi eliminare i file memorizzati in tali directory nella cache di Dispatcher in modo che, la prossima volta che vengono richiesti, vengano recuperati i file aggiornati e non quelli memorizzati in cache.
Se hai usato un’istanza Autore di Dispatcher configurata in precedenza e hai attivato un agente di Dispatcher Flush, effettua le seguenti operazioni: