Conteúdo em cache com base nos cabeçalhos de solicitação
O CloudFront permite que você escolha se quer que o CloudFront encaminhe cabeçalhos para a origem e armazene em cache versões distintas de um objeto especificado com base nos valores do cabeçalho nas solicitações do visualizador. Isso permite fornecer diferentes versões do seu conteúdo com base no dispositivo que o usuário estiver usando, a localização dele, o idioma usado por ele e uma variedade de outros critérios.
Tópicos
Selecionar os cabeçalhos para basear o armazenamento em cache
Configurar o CloudFront para respeitar as configurações do CORS
Configurar o armazenamento em cache com base no tipo de dispositivo
Configurar o armazenamento em cache com base no idioma do visualizador
Configurar o armazenamento em cache com base no local do visualizador
Configurar o armazenamento em cache com base no protocolo da solicitação
Configurar o armazenamento em cache para arquivos compactados
Como o armazenamento em cache com base em cabeçalhos afeta a performance
Como a letra e os valores do cabeçalho afetam o armazenamento em cache
Visão geral de cabeçalhos e distribuições
Por padrão, o CloudFront não considera cabeçalhos ao armazenar seus objetos em cache em pontos de presença. Se a origem retornar dois objetos e seus valores nos cabeçalhos de solicitação forem diferentes, o CloudFront armazenará apenas uma versão do objeto em cache.
É possível configurar o CloudFront para encaminhar cabeçalhos para a origem, o que faz com que o CloudFront armazene várias versões de um objeto em cache com base nos valores de um ou mais cabeçalhos de solicitação. Para configurar o CloudFront para armazenamento em cache os objetos baseados nos valores de cabeçalhos específicos, você especifica as configurações de comportamento do cache para a sua distribuição. Para obter mais informações, consulte Cache baseado em cabeçalhos de solicitação selecionados.
Por exemplo, imagine que as solicitações do visualizador de logo.jpg
contêm um cabeçalho Product
personalizado com um valor de Acme
ou Apex
. Ao configurar o CloudFront para armazenar seus objetos em cache com base no valor do cabeçalho Product
, o CloudFront encaminha solicitações de logo.jpg
para a origem e inclui o cabeçalho Product
e os valores de cabeçalho. O CloudFront armazena logo.jpg
em cache uma vez para solicitações em que o valor do cabeçalho Product
é Acme
, e uma vez para solicitações em que o valor é Apex
.
Você pode configurar cada comportamento de cache em uma distribuição para executar uma das seguintes ações:
-
Encaminhar todos os cabeçalhos para sua origem
nota
Para configurações de cache herdadas: se você configurar o CloudFront para encaminhar todos os cabeçalhos para a origem, ele não armazenará em cache os objetos associados a esse comportamento de cache. Em vez disso, ele enviará todas as solicitações para a origem.
-
Encaminhar uma lista específica de cabeçalhos. O CloudFront armazena seus objetos em cache com base nos valores de todos os cabeçalhos especificados. O CloudFront também encaminha os cabeçalhos encaminhados por ele por padrão, mas armazena seus objetos em cache com base apenas nos cabeçalhos especificados.
-
Encaminhe somente os cabeçalhos padrão. Nessa configuração, o CloudFront não armazena seus objetos em cache com base nos valores dos cabeçalhos de solicitação.
Para saber a cota atual do número de cabeçalhos que você pode encaminhar para cada comportamento de cache ou para solicitar uma cota maior, consulte Cotas para cabeçalhos.
Para obter informações sobre como usar o console do CloudFront para atualizar uma distribuição para que o CloudFront encaminhe cabeçalhos para a origem, consulte Atualizar uma distribuição. Para obter informações sobre como usar a API do CloudFront para atualizar uma distribuição existente, consulte Atualizar distribuição na Referência da API do Amazon CloudFront.
Selecionar os cabeçalhos para basear o armazenamento em cache
Os cabeçalhos que podem ser encaminhados para a origem nos quais o CloudFront baseia o armazenamento em cache dependem de se a origem é um bucket do Amazon S3 ou uma origem personalizada.
-
Amazon S3: é possível configurar o CloudFront para encaminhar e armazenar os objetos em cache com base em vários cabeçalhos específicos (veja a lista de exceções a seguir). No entanto, recomendamos que você evite encaminhar cabeçalhos com uma origem do Amazon S3, a menos que você precise implementar o compartilhamento de recursos de origem cruzada (CORS) ou queira personalizar o conteúdo usando o Lambda@Edge em eventos voltados para a origem.
-
Para configurar o CORS, você deve encaminhar cabeçalhos que permitem que o CloudFront distribua conteúdo para sites habilitados para compartilhamento de recursos de origem cruzada (CORS). Para obter mais informações, consulte Configurar o CloudFront para respeitar as configurações do CORS.
-
Para personalizar o conteúdo usando cabeçalhos que você encaminha para a origem do Amazon S3, escreva e adicione funções do Lambda@Edge e associe-as à sua distribuição do CloudFront a ser acionada por um evento voltado para origem. Para obter mais informações sobre como trabalhar com cabeçalhos para personalizar o conteúdo, consulte Personalizar o conteúdo por cabeçalhos de país ou tipo de dispositivo: exemplos.
Evite encaminhar os cabeçalhos que não estiver usando para personalizar o conteúdo, pois o encaminhamento de cabeçalhos extras pode reduzir a proporção de acertos do cache. Ou seja, o CloudFront não poderá atender a muitas solicitações de caches de borda como uma proporção de todas as solicitações.
-
-
Origem personalizada: é possível configurar o CloudFront para armazenamento em cache com base no valor de qualquer cabeçalho de solicitação, com exceção de:
-
Connection
-
Cookie
: se você quiser encaminhar e armazenar em cache com base em cookies, use uma configuração separada na distribuição. Para obter mais informações, consulte Conteúdo em cache com base em cookies. -
Host (for Amazon S3 origins)
-
Proxy-Authorization
-
TE
-
Upgrade
É possível configurar o CloudFront para armazenar os objetos em cache com base nos valores dos cabeçalhos
Date
eUser-Agent
, mas não é recomendável fazê-lo. Esses cabeçalhos têm vários valores possíveis, e o armazenamento em cache com base nesses valores pode fazer com que o CloudFront encaminhe significativamente mais solicitações para a origem. -
Para obter uma lista completa dos cabeçalhos de solicitação HTTP e a maneira como o CloudFront os processa, consulte Cabeçalhos de solicitação HTTP e comportamento do CloudFront (origens do Amazon S3 e personalizadas).
Configurar o CloudFront para respeitar as configurações do CORS
Se você habilitou o compartilhamento de recursos entre origens (CORS) em um bucket do Amazon S3 ou uma origem personalizada, escolha os cabeçalhos específicos a serem encaminhados, para respeitar as configurações do CORS. Os cabeçalhos que você precisa encaminhar diferem dependendo da origem (Amazon S3 ou personalizada) e de se você quer armazenar respostas OPTIONS
.
Amazon S3
-
Se quiser que as respostas
OPTIONS
sejam armazenadas em cache, faça o seguinte:-
Escolha as opções para configurações de comportamento de cache padrão que permitem o armazenamento em cache de respostas
OPTIONS
. -
Configure o CloudFront para encaminhar os seguintes cabeçalhos:
Origin
,Access-Control-Request-Headers
eAccess-Control-Request-Method
.
-
-
Se não quiser que as respostas
OPTIONS
sejam armazenadas em cache, configure o CloudFront para encaminhar o cabeçalhoOrigin
junto com todos os outros cabeçalhos requeridos pela origem (por exemplo,Access-Control-Request-Headers
,Access-Control-Request-Method
ou outros).
Origens personalizadas: encaminhe o cabeçalho Origin
com todos os outros cabeçalhos requeridos pela origem.
Para configurar o CloudFront para armazenamento em cache de respostas com base no CORS, configure-o para encaminhar cabeçalhos usando uma política de cache. Para ter mais informações, consulte Controlar a chave de cache com uma política.
Para obter mais informações sobre o CORS e o Amazon S3, consulte Uso de compartilhamento de recursos entre origens (CORS) no Guia do usuário do Amazon Simple Storage Service.
Configurar o armazenamento em cache com base no tipo de dispositivo
Para que o CloudFront armazene em cache diferentes versões de seus objetos com base no dispositivo que um usuário está usando para visualizar seu conteúdo, configure o CloudFront para encaminhar os cabeçalhos aplicáveis para a origem personalizada:
-
CloudFront-Is-Desktop-Viewer
-
CloudFront-Is-Mobile-Viewer
-
CloudFront-Is-SmartTV-Viewer
-
CloudFront-Is-Tablet-Viewer
Com base no valor do cabeçalho User-Agent
, o CloudFront define o valor desses cabeçalhos como true
ou false
antes de encaminhar a solicitação para a origem. Se o dispositivo se encaixar em mais de uma categoria, mais de um valor poderá ser true
. Por exemplo, para alguns tablets, o CloudFront pode definir tanto CloudFront-Is-Mobile-Viewer
quanto CloudFront-Is-Tablet-Viewer
como true
.
Configurar o armazenamento em cache com base no idioma do visualizador
Se você quiser que o CloudFront armazene diferentes versões dos objetos em cache com base no idioma especificado na solicitação, configure o CloudFront para encaminhar o cabeçalho Accept-Language
para a origem.
Configurar o armazenamento em cache com base no local do visualizador
Se você quiser que o CloudFront armazene em cache diferentes versões de seus objetos com base no país de origem da solicitação, configure-o para encaminhar o cabeçalho CloudFront-Viewer-Country
para a origem. O CloudFront converte automaticamente o endereço IP da origem da solicitação em um código de país de duas letras. Para obter uma lista de códigos de país fácil de usar, classificável por código e nome do país, consulte a entrada da Wikipédia ISO 3166-1 alfa-2
Configurar o armazenamento em cache com base no protocolo da solicitação
Se você quiser que o CloudFront armazene em cache diferentes versões de seus objetos com base no protocolo da solicitação, HTTP ou HTTPS, configure o CloudFront para encaminhar o cabeçalho CloudFront-Forwarded-Proto
para a origem.
Configurar o armazenamento em cache para arquivos compactados
Se a origem for compatível com compactação Brotli, você poderá armazenar em cache com base no cabeçalho Accept-Encoding
. Configure o armazenamento em cache com base em Accept-Encoding
somente se a origem fornecer conteúdo diferente com base no cabeçalho.
Como o armazenamento em cache com base em cabeçalhos afeta a performance
Ao configurar o CloudFront para armazenamento em cache com base em um ou mais cabeçalhos, e os cabeçalhos tiverem mais de um valor possível, o CloudFront encaminhará mais solicitações para o servidor de origem para o mesmo objeto. Isso reduz a performance e aumenta a carga no servidor de origem. Se o servidor de origem retornar o mesmo objeto, independentemente do valor de um determinado cabeçalho, recomendamos não configurar o CloudFront para armazenamento em cache com base nesse cabeçalho.
Se você configurar o CloudFront para encaminhar mais de um cabeçalho, a ordem dos cabeçalhos nas solicitações do visualizador não afetará o armazenamento em cache, desde que os valores sejam os mesmos. Por exemplo, se uma solicitação contiver os cabeçalhos A:1,B:2 e outra solicitação contive B:2,A:1, o CloudFront armazenará em cache apenas uma cópia do objeto.
Como a letra e os valores do cabeçalho afetam o armazenamento em cache
Quando o CloudFront armazena em cache com base nos valores de cabeçalhos, ele não diferencia maiúsculas e minúsculas do nome do cabeçalho, mas diferencia maiúsculas e minúsculas do valor do cabeçalho:
-
Se as solicitações do visualizador incluírem
Product:Acme
eproduct:Acme
, o CloudFront armazenará um objeto em cache apenas uma vez. A única diferença entre eles é a letra (maiúscula/minúscula) do nome de cabeçalho, que não afeta o armazenamento em cache. -
Se as solicitações do visualizador incluírem
Product:Acme
eProduct:acme
, o CloudFront armazenará um objeto duas vezes em cache, pois o valor seráAcme
em algumas solicitações eacme
em outras.
Cabeçalhos que o CloudFront retorna ao visualizador
Configurar o CloudFront para encaminhar e armazenar cabeçalhos em cache não afeta quais cabeçalhos o CloudFront retorna ao visualizador. O CloudFront retorna todos os cabeçalhos obtidos da origem, com algumas exceções. Para obter mais informações, consulte o tópico aplicável:
-
Origens do Amazon S3: consulte Cabeçalhos de resposta HTTP removidos ou atualizados pelo CloudFront.
-
Origens personalizadas: consulte Cabeçalhos de resposta HTTP que o CloudFront remove ou substitui.