Dispatcher è lo strumento di caching e/o bilanciamento del carico di Adobe Experience Manager.
La pagina seguente fornisce le linee guida per la configurazione del dispatcher per un progetto AEM Screens.
Se un dispatcher è disponibile, è possibile impedire le connessioni al servlet di registrazione filtrando nelle regole del dispatcher.
Se non è presente alcun dispatcher, disattiva il servlet di registrazione nell’elenco dei componenti OSGi.
Prima di configurare il dispatcher per un progetto AEM Screens, è necessario disporre di conoscenze precedenti su Dispatcher.
Fai riferimento a Configurazione di Dispatcher per ulteriori dettagli.
Le seguenti configurazioni del Dispatcher si applicano solo alla versione v2 Manifest. Fai riferimento a Configurazioni del Dispatcher per la versione 3 di Manifest per la versione manifest v3.
I lettori o i dispositivi AEM Screens utilizzano una sessione autenticata per accedere alle risorse anche nelle istanze di pubblicazione. Quindi, quando disponi di più istanze di pubblicazione, le richieste devono sempre andare alla stessa istanza di pubblicazione in modo che la sessione autenticata sia valida per tutte le richieste provenienti dai lettori/dispositivi AEM Screens.
Segui i passaggi riportati di seguito per configurare il dispatcher per un progetto AEM Screens.
Se desideri utilizzare più istanze di pubblicazione fronte a un singolo dispatcher, dovrai aggiornare il dispatcher.any
file per abilitare la persistenza
/stickyConnections {
/paths
{
"/"
}
}
Se disponi di un’istanza di pubblicazione fronte a un dispatcher, l’abilitazione della persistenza al dispatcher non sarà di aiuto in quanto il load balancer può inviare ogni richiesta al dispatcher. In questo caso, fai clic su Abilita in Atteggiamento per attivarlo a livello di load balancer, come illustrato nella figura seguente:
Ad esempio, se utilizzi AWS ALB, consulta Gruppi di destinazione per i bilanciatori di carico dell'applicazione per abilitare la persistenza a livello di ALB. Abilita l'adesività per 1 giorno.
Aggiungi quanto segue a /clientheaders
sezione:
X-Requested-With
X-SET-HEARTBEAT
X-REQUEST-COMMAND
Per configurare i filtri Screens, aggiungi quanto segue a /filter.
## AEM Screens Filters
## # Login, Ping and Device Configurations
/0200 { /type "allow" /method "POST" /url "/libs/granite/core/content/login.validate/j_security_check" }
/0201 { /type "allow" /method "GET" /url "/libs/granite/csrf/token.json" }
/0202 { /type "allow" /method "GET" /url "/content/screens/svc.json" }
/0203 { /type "allow" /method "GET" /url "/content/screens/svc.ping.json" }
/0204 { /type "allow" /method "GET" /url "/content/screens/svc.config.json" }
## # Device Dashboard Configurations
/0210 { /type "allow" /method '(GET|POST)' /url "/home/users/screens/*/devices/*/profile_screens.preferences.json" }
/0211 { /type "allow" /method "POST" /url "/home/users/screens/*/devices/*/profile_screens.logs.json" }
/0212 { /type "allow" /method "POST" /url "/home/users/screens/*/devices/*/profile_screens.statusinfo.json" }
/0213 { /type "allow" /method "POST" /url "/home/users/screens/*/devices/*/profile_screens.screenshot.json" }
## # Content Configurations
/0220 { /type "allow" /method '(GET|HEAD)' /url "/content/screens/*" }
/0221 { /type "allow" /method '(GET|HEAD)' /url "/content/screens/*/jcr:content/*/offline-config_*.zip" }
/0222 { /type "allow" /method '(GET|HEAD)' /url '/var/contentsync/content/screens/.+/jcr:content/.+/offline-config_.*\.[0-9]+\.zip' }
Disattiva la memorizzazione in cache del dispatcher per /content/screens path.
I lettori Screens utilizzano una sessione autenticata, in modo che il dispatcher non memorizzi nella cache nessuna delle richieste dei lettori Screens per channels/assets
.
Per abilitare la cache per le risorse in modo che le risorse vengano servite dalla cache del dispatcher, devi:
/allowAuthorization 1
in /cache
sezione/rules
sezione /cache
/0000
{
/glob "*"
/type "allow"
}
/0001
{
# Disable Dispatcher Cache for Screens channels
/glob "/content/screens/*.html"
/type "deny"
}
/0002
{
# Disable Dispatcher Cache for Screens offline manifests
/glob "/content/screens/*.json"
/type "deny"
}
/0003
{ # Disable Dispatcher Cache for Screens devices json
/glob "/home/users/screens/*.json"
/type "deny"
}
Assicurati di consentire questi filtri e regole di cache nei dispatcher che fronteggiano le istanze di pubblicazione per il funzionamento di Screens.
Prima di configurare Dispatcher (versione manifest v3) per AEM Screens, verifica di seguire i due prerequisiti seguenti:
Assicurati di utilizzare v3 manifests
. Passa a https://<server:port>/system/console/configMgr/com.adobe.cq.screens.offlinecontent.impl.ContentSyncCacheFeatureFlag
e assicurano che Enable ContentSync Cache
è deselezionato.
Assicurati che l’agente di flush del dispatcher sia configurato in /etc/replication/agents.publish/dispatcher1useast1Agent
nell’istanza di pubblicazione.
## AEM Screens Filters
## # Login, Ping and Device Configurations
/0200 { /type "allow" /method "POST" /url "/libs/granite/core/content/login.validate/j_security_check" }
/0201 { /type "allow" /method "GET" /url "/libs/granite/csrf/token.json" }
/0202 { /type "allow" /method "GET" /url "/content/screens/svc.json" }
/0203 { /type "allow" /method "GET" /url "/content/screens/svc.ping.json" }
/0204 { /type "allow" /method "GET" /url "/content/screens/svc.config.json" }
## # Device Dashboard Configurations
/0210 { /type "allow" /method '(GET|POST)' /url "/home/users/screens/*/devices/*/profile_screens.preferences.json" }
/0211 { /type "allow" /method "POST" /url "/home/users/screens/*/devices/*/profile_screens.logs.json" }
/0212 { /type "allow" /method "POST" /url "/home/users/screens/*/devices/*/profile_screens.statusinfo.json" }
/0213 { /type "allow" /method "POST" /url "/home/users/screens/*/devices/*/profile_screens.screenshot.json" }
## # Content Configurations
/0220 { /type "allow" /method '(GET|HEAD)' /url "/content/screens/*" }
#/0221 { /type "allow" /method '(GET|HEAD)' /url "/content/experience-fragments/*" } ## uncomment this, if you're using experience-fragments
/0222 { /type "allow" /extension '(css|eot|gif|ico|jpeg|jpg|js|gif|pdf|png|svg|swf|ttf|woff|woff2|html|mp4|mov|m4v)' /path "/content/dam/*" } ## add any other formats required for your project here
## # Enable clientlibs proxy servlet
/0230 { /type "allow" /method "GET" /url "/etc.clientlibs/*" }
Aggiungi /allowAuthorized "1"
a /cache
sezione publish_farm.any
.
Tutti i lettori Screens utilizzeranno la sessione autenticata per connettersi a AEM (autore/pubblicazione). Dispatcher standard non memorizza in cache questi url, pertanto è necessario attivarli.
Aggiungi statfileslevel "10"
a /cache
sezione publish_farm.any
Questo supporterà il caching fino a 10 livelli dal docroot della cache e annullerà di conseguenza la validità quando il contenuto viene pubblicato anziché invalidare tutto. Puoi modificare questo livello in base alla profondità della struttura del contenuto
Aggiungi quanto segue a /invalidate section in publish_farm.any
/0003 {
/glob "*.json"
/type "allow"
}
Aggiungi le regole seguenti a /rules
sezione /cache
in publish_farm.any
o in un file incluso da publish_farm.any
:
## Don't cache CSRF login tokens
/0001
{
/glob "/libs/granite/csrf/token.json"
/type "deny"
}
## Allow Dispatcher Cache for Screens channels
/0002
{
/glob "/content/screens/*.html"
/type "allow"
}
## Allow Dispatcher Cache for Screens offline manifests
/0003
{
/glob "/content/screens/*.manifest.json"
/type "allow"
}
## Allow Dispatcher Cache for Assets
/0004
{
/glob "/content/dam/*"
/type "allow"
}
## Disable Dispatcher Cache for Screens devices json
/0005
{
/glob "/home/users/screens/*.json"
/type "deny"
}
## Disable Dispatcher Cache for Screens svc json
/0006
{
/glob "/content/screens/svc.json"
/type "deny"
}
Se utilizzi campagne mirate con AEM Screens, la segments.js file
il servizio dispatcher deve essere invalidato, in quanto aggiungi e pubblica nuovi segmenti su AEM. Senza questa regola di invalidazione, le nuove campagne con targeting non funzioneranno sul lettore Screens (mostrerà invece il contenuto predefinito).
/etc/httpd/conf.dispatcher.d/available_farms/999_ams_publish_farm.any
. Ecco la regola da aggiungere: /invalidate {
.
.
/0004 {
/glob "conf/<project-name>/settings/wcm/.js"
/type "allow"
}
}
segments.js
Il file viene invalidato e l’ultima viene recuperata quando viene modificato.