O Dispatcher é a ferramenta de balanceamento de carga e/ou cache do Adobe Experience Manager.
A página a seguir fornece as diretrizes para configurar o dispatcher para um projeto do AEM Screens.
Se um dispatcher estiver disponível, as conexões com o servlet de registro poderão ser evitadas filtrando nas regras do dispatcher.
Se não houver dispatcher, desative o servlet de registro na lista de componentes OSGi.
Antes de configurar o dispatcher para um projeto do AEM Screens, você deve ter conhecimento prévio do Dispatcher.
Consulte Configuração do Dispatcher para obter mais detalhes.
As seguintes configurações do Dispatcher se aplicam somente à versão do Manifesto v2. Consulte Configurações do Dispatcher para a versão do Manifesto v3 para a versão de manifesto v3.
Os players ou dispositivos AEM Screens usam uma sessão autenticada para acessar os recursos nas instâncias de publicação também. Portanto, quando você tem várias instâncias de publicação, as solicitações devem sempre ir para a mesma instância de publicação, para que a sessão autenticada seja válida para todas as solicitações provenientes de players/dispositivos AEM Screens.
Siga as etapas abaixo para configurar o dispatcher para um projeto do AEM Screens.
Se quiser usar várias instâncias de publicação encaminhadas por um único dispatcher, será necessário atualizar a variável dispatcher.any
para ativar a adesão
/stickyConnections {
/paths
{
"/"
}
}
Se você tiver uma instância de publicação encaminhada por um dispatcher, ativar a adesão no dispatcher não ajudará, pois o balanceador de carga pode enviar cada solicitação ao dispatcher. Nesse caso, clique em Habilitar em Atenção para habilitá-lo no nível do balanceador de carga, conforme mostrado na figura abaixo:
Por exemplo, se estiver usando o AWS ALB, consulte Grupos de destino para seus balanceadores de carga de aplicativo para ativar a adesão no nível ALB. Ativar a adesão por 1 dia.
Adicione o seguinte a /clientheaders
seção:
X-Requested-With
X-SET-HEARTBEAT
X-REQUEST-COMMAND
Para configurar os filtros do Screens, adicione o seguinte 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' }
Desative o armazenamento em cache do dispatcher para /content/screens path.
Os players do Screens usam sessão autenticada, de modo que o dispatcher não armazena em cache nenhuma solicitação dos players de tela para channels/assets
.
Para ativar o cache dos ativos para que os ativos sejam disponibilizados a partir do cache do dispatcher, você deve:
/allowAuthorization 1
em /cache
seção/rules
seção de /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"
}
Certifique-se de permitir esses filtros e regras de cache em dispatchers que encaminham as instâncias de publicação para o funcionamento do Screens.
Siga estes dois pré-requisitos antes de configurar o Dispatcher (versão de manifesto v3) para o AEM Screens:
Certifique-se de que você esteja usando v3 manifests
. Navegar para https://<server:port>/system/console/configMgr/com.adobe.cq.screens.offlinecontent.impl.ContentSyncCacheFeatureFlag
e assegurar que Enable ContentSync Cache
está desmarcada.
Verifique se o agente de liberação do dispatcher está configurado em /etc/replication/agents.publish/dispatcher1useast1Agent
na instância de publicação.
## 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/*" }
Adicionar /allowAuthorized "1"
para /cache
seção em publish_farm.any
.
Todos os players do Screens usarão uma sessão autenticada para se conectar a AEM (criar/publicar). O Dispatcher pronto para uso não armazena esses urls em cache, portanto, devemos ativá-los.
Adicionar statfileslevel "10"
para /cache
seção em publish_farm.any
Isso oferecerá suporte ao armazenamento em cache de até 10 níveis a partir do docroot do cache e invalidará adequadamente quando o conteúdo for publicado, em vez de invalidar tudo. Você pode alterar esse nível com base no quão profunda sua estrutura de conteúdo é
Adicione o seguinte a /invalidate section in publish_farm.any
/0003 {
/glob "*.json"
/type "allow"
}
Adicione as seguintes regras a /rules
seção em /cache
em publish_farm.any
ou em um arquivo incluído de 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 você estiver usando campanhas direcionadas com o AEM Screens, a variável segments.js file
servido pelo dispatcher precisa ser invalidado, à medida que você adiciona e publica novos segmentos no AEM. Sem essa regra de invalidação, as novas campanhas direcionadas não funcionarão no player do Screens (em vez disso, mostrarão o conteúdo padrão).
/etc/httpd/conf.dispatcher.d/available_farms/999_ams_publish_farm.any
. Esta é a regra a ser adicionada: /invalidate {
.
.
/0004 {
/glob "conf/<project-name>/settings/wcm/.js"
/type "allow"
}
}
segments.js
O arquivo é invalidado e o mais recente é buscado ao ser modificado.