Panoramica di Dispatcher :headding-anchor:dispatcher-overview
Dispatcher è uno strumento di memorizzazione in cache e/o bilanciamento del carico di Adobe Experience Manager che può essere utilizzato insieme a un server Web di classe Enterprise.
iIl processo di distribuzione del Dispatcher è indipendente dal server web e dalla piattaforma del sistema operativo scelti:
- Scopri di più su Dispatcher (questa pagina). Inoltre, consulta le domande frequenti sul Dispatcher.
- Installa un server web supportato in base alla documentazione di quel server web.
- Installa il modulo Dispatcher nel server web e configura di conseguenza il server web.
- Configura Dispatcher (il file dispatcher.any).
- Configura AEM in modo che gli aggiornamenti del contenuto invalidino la cache.
- Vedi Chiedi agli esperti della community AEM di luglio 2017.
- Accedi a questo archivio. Contiene una raccolta di esperimenti in un formato di laboratorio "take-home".
Utilizza le seguenti informazioni come richiesto:
- Elenco di controllo della sicurezza di Dispatcher
- Knowledge Base di Dispatcher
- Ottimizzazione delle prestazioni della cache di un sito web
- Utilizzo di Dispatcher con più domini
- Utilizzo di SSL con Dispatcher
- Implementazione del caching sensibile alle autorizzazioni
- Risoluzione dei problemi di Dispatcher
- Domande frequenti sui principali problemi di Dispatcher
Perché usare Dispatcher per implementare il caching? :headding-anchor:why-use-dispatcher-to-implement-caching
Sono due gli approcci di base alla pubblicazione sul web:
- Server web statici: come Apache o IIS, che sono molto semplici, ma veloci.
- Server di gestione del contenuto: che forniscono contenuti intelligenti, dinamici e in tempo reale, ma richiedono un tempo di calcolo maggiore e altre risorse.
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:
- Archiviare (o “memorizzare in cache”) la maggior parte del contenuto del sito sotto forma di sito web statico
- Accedere il meno possibile al motore di layout.
Questo significa che:
-
Il contenuto statico viene gestito con la stessa velocità e facilità di un server web statico. Inoltre, puoi utilizzare gli strumenti di amministrazione e di 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.
Server web statico :headding-anchor:static-web-server
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 è semplice ed 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 tempo. Perciò, è disponibile una vasta gamma di strumenti per l’amministrazione e la gestione della sicurezza. Questi strumenti sono ben integrati con le infrastrutture di rete.
Server di gestione dei contenuti :headding-anchor:content-management-servers
Se utilizzi un CMS (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 flusso di lavoro 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.
Funzionamento del caching in Dispatcher :headding-anchor:how-dispatcher-performs-caching
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 nella cache nella radice del server web.
Metodi di caching
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.
Aggiornamenti del contenuto
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:
- Elimina i file modificati dalla cache.
- Elimina dalla cache tutti i file che iniziano con la stessa gestione. Ad esempio, se viene aggiornato il file
/en/index.html
, tutti i file che iniziano con/en/index.
sono cancellati. Questo meccanismo consente di progettare siti efficienti in termini di cache, soprattutto per la navigazione tra le immagini. - Il cosiddetto statfile viene toccato e la sua marca temporale viene aggiornata per indicare la data dell’ultima modifica.
Tieni presente le seguenti considerazioni:
- Gli aggiornamenti di contenuto vengono in genere utilizzati insieme a un sistema di authoring che “sa” cosa deve essere sostituito.
- Gli aggiornamenti del contenuto che interessano i file vengono rimossi, ma non sostituiti immediatamente. La volta successiva in cui un tale file viene richiesto, Dispatcher lo recupera dall’istanza AEM e lo inserisce nella cache, sovrascrivendo il vecchio contenuto.
- In genere, le immagini generate automaticamente che incorporano testo di una pagina vengono archiviate in file di immagine che iniziano con lo stesso handle, in modo da garantire l’associazione per l’eliminazione. Ad esempio, puoi archiviare il testo del titolo della pagina mypage.html come immagine mypage.titlePicture.gif nella stessa cartella. In questo modo l’immagine viene eliminata automaticamente dalla cache ogni volta che la pagina viene aggiornata e potrai essere sicuro che l’immagine rispecchierà sempre la versione corrente della pagina.
- Possono esistere diversi statfile, ad esempio uno per cartella della lingua. Se una pagina viene aggiornata, AEM cerca la cartella padre successiva contenente uno statfile e tocca tale file.
Annullamento automatico della validità
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:
- Se il documento memorizzato in cache è più recente, Dispatcher lo restituisce.
- Se è precedente, Dispatcher recupera la versione corrente dall’istanza di AEM.
Anche in questo caso, tieni presente le seguenti considerazioni:
- L’annullamento automatico della validità viene utilizzato in genere quando le interrelazioni sono complesse, ad esempio per le pagine HTML. Queste pagine contengono collegamenti e voci di navigazione e in genere devono essere aggiornate dopo un aggiornamento del contenuto. Se sono presenti file PDF o di immagine generati automaticamente, puoi scegliere di annullarne automaticamente anche la validità.
- L’annullamento automatico della validità non richiede alcuna azione da parte del Dispatcher al momento dell’aggiornamento, se non quella di toccare lo statfile. Tuttavia, quando lo statfile viene toccato, il contenuto della cache diventa automaticamente obsoleto, anche se non viene rimosso fisicamente dalla cache.
Restituzione dei documenti in Dispatcher :headding-anchor:how-dispatcher-returns-documents
Stabilire se un documento è soggetto a caching
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 AEM nei seguenti casi:
- L’URI della richiesta contiene un punto interrogativo
?
. In genere questo segno indica una pagina dinamica, ad esempio un risultato della ricerca, che non deve 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).
- L’intestazione di autenticazione è impostata (configurabile).
Stabilire se un documento è memorizzato in cache
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, il Dispatcher verifica se tale documento è presente nel file system del server web:
- Se il documento è memorizzato in cache, Dispatcher restituisce il file.
- Se non è memorizzato in cache, Dispatcher richiede il documento dall’istanza di AEM.
Determinare se un documento è aggiornato
Per verificare se un documento è aggiornato, Dispatcher esegue due passaggi:
- Verifica se il documento è soggetto ad annullamento automatico della validità. In caso contrario, 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.
Vantaggi del bilanciamento del carico :headding-anchor:the-benefits-of-load-balancing
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, questa fa sì che il Dispatcher condivida le richieste di documenti tra diverse istanze 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, il 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. Tuttavia, l’elaborazione di tutti i servizi non subirà interruzioni. -
È anche possibile gestire siti web diversi sullo stesso server web statico.
Bilanciamento del carico in Dispatcher :headding-anchor:how-the-dispatcher-performs-load-balancing
Statistiche sulle prestazioni
Dispatcher mantiene statistiche interne sulla velocità di elaborazione dei documenti in ogni istanza di AEM. In base a questi dati, il Dispatcher può stimare quale istanza è in grado di fornire il tempo di risposta più rapido quando risponde a una richiesta e quindi riserva il tempo di elaborazione necessario a tale istanza.
I diversi tipi di richieste possono avere diversi tempi medi di completamento, pertanto il Dispatcher consente di specificare le categorie dei documenti. Queste categorie 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 possono essere molto diversi.
Se utilizzi una funzione di ricerca complessa, puoi creare una categoria per le query di ricerca. In questo modo il Dispatcher può inviare le query di ricerca all’istanza che risponde più velocemente. Inoltre, 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”.
Contenuto personalizzato (connessioni permanenti)
Con le connessioni permanenti è possibile garantire che i documenti di un utente siano tutti composti nella stessa istanza di AEM. Questa funzione è importante, se utilizzi pagine e dati di sessione personalizzati. 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.
Utilizzo di più istanze di Dispatcher :headding-anchor:using-multiple-dispatchers
In configurazioni complesse è possibile utilizzare più istanze di Dispatcher. Ad esempio, puoi utilizzare:
- Un’istanza di Dispatcher per pubblicare un sito web nella Intranet.
- Una seconda istanza di Dispatcher, con indirizzo e impostazioni di sicurezza diversi, per pubblicare lo stesso contenuto in Internet.
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.
Utilizzo di Dispatcher con una rete CDN :headding-anchor:using-dispatcher-with-a-cdn
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:
- Velocizzare i tempi di risposta per gli utenti finali.
- Alleggerisce il carico dei server.
In quanto componente di un’infrastruttura HTTP, una rete CDN funziona in modo analogo a un Dispatcher. Quando un nodo della rete CDN riceve una richiesta, la distribuisce dalla propria cache, se possibile (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:
- Nodo Akamai Edge
- Lvello Akamai Midgress
- Firewall dell’utente
- Load balancer dell’utente
- Dispatcher
- AEM
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.
Controllo di una cache della rete CDN :headding-anchor:controlling-a-cdn-cache
Esistono diversi modi per controllare per quanto tempo una rete CDN memorizza 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 HTTPExpires:
eCache-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 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 configurazione tipica di AEM, la configurazione per estensione, per percorso o per entrambi, che può essere realizzata tramite i punti 1 e 2 già menzionati, permette di impostare periodi di memorizzazione in cache ragionevoli. Questi periodi di memorizzazione in cache sono utili per quelle risorse che vengono utilizzate spesso e che non sono soggette a frequenti modifiche, come immagini usate nei design e le librerie client. Quando vengono distribuite nuove versioni, in genere è necessario annullare manualmente la validità.
Se si utilizza questo approccio per memorizzare in cache il contenuto gestito, le modifiche apportate al contenuto diventano visibili agli utenti finali solo dopo la scadenza del periodo di caching configurato, e quando 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 impostare un’agente di replica che le userà per annullare la validità della cache della rete CDN.
Utilizzo di un’istanza di Dispatcher con Author Server :headding-anchor:using-a-dispatcher-with-an-author-server
author_dispatcher.any
e 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 il Dispatcher in un server web (può essere un server web Apache o IIS; consulta Installazione Dispatcher).
-
Testa il Dispatcher appena installato rispetto a un’istanza di pubblicazione AEM funzionante. In questo modo si garantisce che sia stata effettuata un’installazione corretta della linea di base.
-
Assicurati che Dispatcher sia in grado di connettersi all’istanza di authoring tramite TCP/IP.
-
Sostituisci il file
dispatcher.any
di esempio con il fileauthor_dispatcher.any
fornito con il download del Dispatcher. -
Apri il file
author_dispatcher.any
in un editor di testo e apporta le seguenti modifiche:- Modifica
/hostname
e/port
della sezione/renders
in modo che puntino all’istanza di authoring. - Modifica
/docroot
della sezione/cache
in modo che punti a una directory della cache. Se utilizzi AEM con l’interfaccia utente touch, vedi l’avviso riportato sopra. - Salva le modifiche.
- Modifica
-
Elimina tutti i file esistenti nella directory
/cache
>/docroot
configurata in precedenza. -
Riavvia il server web.
author_dispatcher.any
fornita, quando installi un pacchetto di funzioni, hotfix o un pacchetto di codice dell’applicazione CQ5 che interessa un qualsiasi contenuto in /libs
o /apps
, devi eliminare i file memorizzati nella cache. I file si trovano in tali directory nella cache di Dispatcher. In questo modo, si assicura che alla successiva richiesta vengano recuperati i nuovi file aggiornati e non quelli vecchi memorizzati nella cache.- Elimina o disattiva l’agente di svuotamento del Dispatcher di authoring nell’istanza di authoring di AEM.
- Ripeti la configurazione del Dispatcher di authoring seguendo le nuove istruzioni riportate sopra.