Os cabeçalhos personalizados não passam pelo Dispatcher ou afetam o comportamento do armazenamento em cache
Os cabeçalhos de resposta personalizados, como X-Robots-Tag, ETag e cabeçalhos de cache personalizados desaparecem quando uma página é veiculada pela Dispatcher, ou interrompem o cache CDN quando uma diretiva Vary: User-Agent herdada está presente. O Dispatcher encaminha apenas cabeçalhos de resposta explicitamente listados em sua configuração /cache/headers e /headers, e o Apache substitui alguns cabeçalhos (como ETag), a menos que seja instruído a adiar para o AEM. Permitir o cabeçalho na configuração do farm, garantir que o Apache o encaminhe sem modificações, remover a diretiva Vary: User-Agent herdada e limpar o cache restaurará a passagem e o cache corretos do cabeçalho.
Descrição description
Ambientes:
- Adobe Experience Manager as a Cloud Service (AEMaaCS)
- AEM Managed Services (AMS)
- Software local Adobe Experience Manager
- AEM Dispatcher (Apache) e a camada CDN
Problema/sintomas:
- Um cabeçalho está visível na Publicação do AEM com
curl -I, mas está ausente na Dispatcher. - O CDN não armazena páginas em cache por causa de
Vary: User-Agent. - Os cabeçalhos personalizados aparecem somente quando um parâmetro de consulta (
?a=b) é adicionado, pois o Dispatcher ignora o cache. - O
ETagfoi perdido ou modificado, como o Apache-gzip. - O Dispatcher retorna conteúdo desatualizado porque os cabeçalhos em cache não são atualizados.
Causa raiz:
O Dispatcher encaminha apenas cabeçalhos de resposta explicitamente listados em /cache/headers e /headers. Quando um cabeçalho não está presente, o Dispatcher o desmonta ou usa metadados de cabeçalho em cache. O Apache substitui cabeçalhos (como ETag) a menos que seja configurado para adiar para o AEM. Algumas configurações herdadas do vhost incluem Header append Vary User-Agent, que interrompe o cache da CDN devido à cardinalidade excessiva de variação. As solicitações de sequência de consulta ignoram o cache, o que faz com que os cabeçalhos ausentes apareçam apenas em caminhos em cache.
Como confirmar
- Determine se o cabeçalho está ausente antes ou depois da Dispatcher. Execute
curl -Icom base nas URLs de Publicação e Dispatcher e compare os conjuntos de cabeçalhos. Se o cabeçalho for exibido em Publicar, mas estiver ausente ou modificado no Dispatcher, o Dispatcher ou o Apache o removerá. Se já estiver faltando em Publicar, corrija o código do AEM primeiro. - Verifique se o cache do Dispatcher está envolvido. Teste novamente com um parâmetro de consulta (
curl -Iem relação a uma URL com?a=b). Se o cabeçalho for exibido somente com o parâmetro de consulta, o recurso estará sendo veiculado a partir do cache, sem metadados de cabeçalho armazenados.
Resolução resolution
Siga estas etapas para resolver o problema:
-
Permitir o cabeçalho para armazenamento em cache no arquivo farm. No arquivo do farm de publicação
.any, adicione o nome do cabeçalho ao bloco/cache/headers(Por exemplo:X-Robots-Tag,ETagouEdge-Cache-Tag). Depois de reiniciar e limpar o cache, executecurl -Ie confirme se o cabeçalho aparece. -
Certifique-se de que o Apache encaminhe o cabeçalho sem substituí-lo. Para AMS e local, edite o vhost:
- Para
ETag, adicioneFileETag NoneeHeader unset ETag. - Para um cabeçalho personalizado, defina
SetEnvIfNoCase X-Robots-Tag "(.+)$" X_ROBOTS_TAG=$1eHeader always set X-Robots-Tag "%{X-Robots-Tag}e" env=X_ROBOTS_TAG.
- Para
Execute apachectl -t, reinicie o serviço e confirme se curl -I mostra o cabeçalho.
3. Permitir o cabeçalho para encaminhamento (não armazenamento em cache) no arquivo farm. Adicione o cabeçalho ao bloco /headers para que o Dispatcher o encaminhe para o cliente mesmo quando a resposta não estiver armazenada em cache, depois confirme com curl -I.
4. Remova a diretiva Vary: User-Agent herdada. Pesquise os diretórios vhost com grep -R "Vary User-Agent" . e comente todas as instâncias encontradas, para que o CDN retome as respostas de armazenamento em cache.
5. Limpe o cache após as alterações de configuração. No AEMaaCS, use Cloud Manager → Ambiente → Limpar cache. No AMS ou no local, remova os arquivos em cache em <dispatcher_cache_path> ou acione uma liberação de ativação e reinicie o Apache. Confirmar se curl -I mostra o cabeçalho correto.
6. Valide o mapeamento de domínio para farm. Confirme se o vhost inclui o domínio solicitado para que o Dispatcher use o farm de publicação correto com as regras de cabeçalho. Verifique os logs do Dispatcher para Nenhum farm corresponde ao host; se ele aparecer, adicione o domínio ao vhost ServerName ou ServerAlias e tente novamente.
Validação
- Execute
curl -Icom base na URL do Dispatcher e confirme se o cabeçalho está presente e corresponde a Publicar. - Confirme se o arquivo de metadados em cache (
<path>.headers) foi criado no diretório de cache do Dispatcher. - Confirme se nenhum cabeçalho não intencional (como
Vary: User-Agent) permanece no vhosts e verifique a taxa de acertos do cache do CDN antes e depois da alteração.