Armazenar conteúdo em cache com base em cookies - Amazon CloudFront

Armazenar conteúdo em cache com base em cookies

Por padrão, o CloudFront não considera cookies ao processar solicitações e respostas, nem ao armazenar os objetos em cache em pontos de presença. Se o CloudFront receber duas solicitações idênticas, exceto pelo que está no cabeçalho Cookie, por padrão, o CloudFront tratará as solicitações como idênticas e retornará o mesmo objeto para as duas solicitações.

É possível configurar o CloudFront para encaminhar à origem alguns ou todos os cookies em solicitações de visualizador e armazenar em cache versões separadas dos objetos com base nos valores de cookie encaminhados. Ao fazer isso, o CloudFront usa alguns ou todos os cookies das solicitações de visualizador (todos os que estiverem configurados para serem encaminhados) a fim de identificar exclusivamente um objeto no cache.

Por exemplo, imagine que as solicitações de locations.html contêm um cookie country com um valor de uk ou fr. Ao configurar o CloudFront para armazenar os objetos em cache com base no valor do cookie country, o CloudFront encaminhará as solicitações de locations.html para a origem e incluirá o cookie country e os respectivos valores. Sua origem retornará locations.html, e o CloudFront armazenará o objeto em cache uma vez para solicitações em que o valor do cookie country é uk e uma vez para solicitações em que o valor for fr.

Importante

O Amazon S3 e alguns servidores HTTP não processam cookies. Não configure o CloudFront para encaminhar cookies a uma origem que não processe cookies ou que não varie a resposta com base em cookies. Isso pode fazer com que o CloudFront encaminhe mais solicitações para a origem para o mesmo objeto, o que reduz a performance e aumenta a carga na origem. Ao considerar o exemplo anterior, se sua origem não processar o cookie country ou sempre retornar a mesma versão de locations.html para o CloudFront, independentemente do valor do cookie country, não configure o CloudFront para encaminhar esse cookie.

Por outro lado, se a origem personalizada depender de um cookie específico ou enviar respostas diferentes com base em um cookie, configure o CloudFront para encaminhar esse cookie para a origem. Caso contrário, o CloudFront remove o cookie antes de encaminhar a solicitação para a origem.

Para configurar o encaminhamento de cookies, atualize o comportamento de cache da sua distribuição. Para obter mais informações sobre comportamentos de cache, consulte Configurações de comportamento de cache, especificamente as seções Forward Cookies e Whitelist Cookies.

Você pode configurar cada comportamento de cache para realizar uma das seguintes ações:

  • Encaminhar todos os cookies para a origem: o CloudFront inclui todos os cookies enviados pelo visualizador ao encaminhar solicitações para a origem. Quando a origem retorna uma resposta, o CloudFront armazena a resposta em cache usando os nomes e os valores de cookie na solicitação do visualizador. Se a resposta da origem incluir cabeçalhos Set-Cookie, o CloudFront os retornará ao visualizador com o objeto solicitado. O CloudFront também armazena os cabeçalhos em cache Set-Cookie com o objeto retornado da origem e envia esses cabeçalhos Set-Cookie para visualizadores em todos os acertos do cache.

  • Encaminhar um conjunto de cookies especificados: o CloudFront remove todos os cookies enviados pelo visualizador que não estejam na lista de permissões antes de encaminhar uma solicitação para a origem. O CloudFront armazena a resposta em cache usando os nomes e valores de cookies na lista na solicitação do visualizador. Se a resposta da origem incluir cabeçalhos Set-Cookie, o CloudFront os retornará ao visualizador com o objeto solicitado. O CloudFront também armazena os cabeçalhos em cache Set-Cookie com o objeto retornado da origem e envia esses cabeçalhos Set-Cookie para visualizadores em todos os acertos do cache.

    Para obter informações sobre como especificar curingas em nomes de cookies, consulte Whitelist Cookies.

    Para saber a cota atual do número de nomes de cookies que você pode encaminhar para cada comportamento de cache ou para solicitar uma cota maior, consulte Cotas em cadeias de consulta (configurações de cache herdadas).

  • Não encaminhar cookies para a origem: o CloudFront não armazena os objetos em cache com base no cookie enviado pelo visualizador. Além disso, o CloudFront remove os cookies antes de encaminhar as solicitações para a origem e remove os cabeçalhos Set-Cookie das respostas antes de retorná-las aos visualizadores.

Observações sobre como especificar os cookies que você deseja encaminhar:

Logs de acesso

Se você configurar o CloudFront para registrar solicitações e cookies em log, o CloudFront registrará todos os cookies e atributos de cookie em log, mesmo que você configure o CloudFront para não encaminhar cookies para a origem ou configure o CloudFront para encaminhar somente cookies específicos. Para obter mais informações sobre o log do CloudFront, consulte Configurar e usar logs padrão (logs de acesso).

Diferenciação de letras maiúsculas e minúsculas

Os nomes e valores de cookie diferenciam letras maiúsculas e minúsculas. Por exemplo, se o CloudFront estiver configurado para encaminhar todos os cookies, e duas solicitações de visualizador para o mesmo objeto tiverem cookies idênticos, apenas com diferenças de maiúsculas e minúsculas, o CloudFront armazenará o objeto em cache duas vezes.

O CloudFront classifica cookies

Se o CloudFront estiver configurado para encaminhar cookies (todos ou um subconjunto), ele classificará os cookies na ordem natural pelo nome do cookie antes de encaminhar a solicitação para a origem.

If-Modified-Since e If-None-Match

As solicitações condicionais If-Modified-Since e If-None-Match não são compatíveis com o CloudFront quando ele estiver configurado para encaminhar cookies (todos ou um subconjunto).

O formato padrão do par nome-valor é obrigatório

O CloudFront encaminhará um cabeçalho de cookie somente se o valor estiver em conformidade com o formato padrão do par nome-valor, por exemplo: "Cookie: cookie1=value1; cookie2=value2"

Desativar o armazenamento em cache de cabeçalhos Set-Cookie

Se o CloudFront estiver configurado para encaminhar cookies para a origem (sejam todos ou alguns específicos), ele também armazenará em cache os cabeçalhos Set-Cookie recebidos na resposta da origem. O CloudFront inclui esses cabeçalhos Set-Cookie em sua resposta ao visualizador original e também os inclui em respostas subsequentes que são fornecidas do cache do CloudFront.

Se você quiser receber cookies na origem, mas não quiser que o CloudFront armazene os cabeçalhos Set-Cookie nas respostas da origem, configure a origem para adicionar um cabeçalho Cache-Control com uma diretiva no-cache que especifique Set-Cookie como um nome de campo. Por exemplo: Cache-Control: no-cache="Set-Cookie". Para obter mais informações, consulte Response Cache-Control Directives no padrão Hypertext Transfer Protocol (HTTP/1.1): Caching.

Tamanho máximo dos nomes de cookies

Se você configurar o CloudFront para encaminhar cookies específicos para sua origem, o número total de bytes em todos os nomes de cookies que o CloudFront foi configurado para encaminhar não poderá exceder 512 menos o número de cookies que serão encaminhados. Por exemplo, se você configurar o CloudFront para encaminhar 10 cookies para a origem, o tamanho total dos nomes de todos eles não poderá ultrapassar 502 bytes (512 a 10).

Se você configurar o CloudFront para encaminhar todos os cookies para a origem, o tamanho dos nomes dos cookies não importará.

Para obter informações sobre como usar o console do CloudFront para atualizar uma distribuição para que o CloudFront encaminhe cookies para a origem, consulte Atualizar uma distribuição. Para obter informações sobre como usar a API do CloudFront para atualizar uma distribuição, consulte UpdateDistribution na Referência da API do Amazon CloudFront.