Noções básicas sobre políticas de cache - Amazon CloudFront

Noções básicas sobre políticas de cache

É possível usar uma política de cache para melhorar a taxa de acertos do cache controlando os valores (strings de consulta de URL, cabeçalhos HTTP e cookies) incluídos na chave de cache. O CloudFront fornece algumas políticas de cache predefinidas, conhecidas como políticas gerenciadas, para casos de uso comuns. É possível usar essas políticas gerenciadas ou criar sua própria política de cache específica para suas necessidades. Para obter mais informações sobre políticas gerenciadas, consulte Usar políticas de cache gerenciadas.

Uma política de cache contém as seguintes configurações, que são categorizadas em informações de política, configurações de vida útil (TTL) e configurações chave de cache.

Informações de política

Nome

Um nome exclusivo para identificar a política de cache. No console, você usa o nome para anexar a política de cache a um comportamento de cache.

Descrição

Um comentário para descrever a política de cache. Isso é opcional, mas pode ajudar a identificar a finalidade da política de cache.

Configurações de vida útil (TTL)

As configurações de vida útil (TTL) funcionam em conjunto com os cabeçalhos HTTP Cache-Control e Expires (se eles estiverem na resposta da origem) para determinar por quanto tempo os objetos permanecem válidos no cache do CloudFront.

Minimum TTL

O tempo mínimo, em segundos, que você quer que os objetos permaneçam no cache do CloudFront antes que o CloudFront verifique se o objeto foi atualizado na origem. Para ter mais informações, consulte Gerenciar o tempo de permanência do conteúdo no cache (expiração).

Maximum TTL

O tempo máximo, em segundos, que os objetos permanecem no cache do CloudFront antes que o CloudFront envie outra solicitação à origem para verificar se o objeto foi atualizado. O CloudFront usa essa configuração somente quando a origem envia cabeçalhos Cache-Control ou Expires com o objeto. Para ter mais informações, consulte Gerenciar o tempo de permanência do conteúdo no cache (expiração).

TTL padrão

O tempo padrão, em segundos, que você quer que os objetos permaneçam no cache do CloudFront antes que o CloudFront verifique se o objeto foi atualizado na origem. O CloudFront usa esse valor de configuração como a TTL do objeto somente quando a origem não envia cabeçalhos Cache-Control ou Expires com o objeto. Para ter mais informações, consulte Gerenciar o tempo de permanência do conteúdo no cache (expiração).

nota

Se as configurações Minimum TTL (TTL mínimo), Maximum TTL (TTL máximo) e Default TTL (TTL padrão) estiverem todas definidas como 0, isso desativará o armazenamento em cache do CloudFront.

Configurações da chave de cache

As configurações da chave de cache especificam os valores nas solicitações do visualizador que o CloudFront inclui na chave de cache. Os valores podem incluir strings de consulta de URL, cabeçalhos HTTP e cookies. Os valores que você inclui na chave de cache são automaticamente incluídos nas solicitações que o CloudFront envia à origem, conhecidas como solicitações de origem. Para obter informações sobre como controlar solicitações de origem sem afetar a chave de cache, consulte Controlar as solicitações de origem com uma política.

As configurações de chave de cache incluem:

Cabeçalhos

Os cabeçalhos HTTP em solicitações do visualizador que o CloudFront inclui na chave de cache e nas solicitações da origem. Para cabeçalhos, é possível escolher uma das seguintes configurações:

  • None (Nenhum): os cabeçalhos HTTP nas solicitações do visualizador não são incluídos na chave de cache e não são incluídos automaticamente nas solicitações da origem.

  • Include the following headers (Incluir os seguintes cabeçalhos): você especifica quais dos cabeçalhos HTTP nas solicitações do visualizador serão incluídos na chave de cache e incluídos automaticamente nas solicitações da origem.

Ao usar a configuração Include the following headers (Incluir os seguintes cabeçalhos), você especifica cabeçalhos HTTP pelo nome, não pelo valor. Por exemplo, considere o seguinte cabeçalho HTTP:

Accept-Language: en-US,en;q=0.5

Nesse caso, você especifica o cabeçalho como Accept-Language, não como Accept-Language: en-US,en;q=0.5. No entanto, o CloudFront inclui o cabeçalho completo, incluindo seu valor, na chave de cache e nas solicitações da origem.

Também é possível incluir determinados cabeçalhos gerados pelo CloudFront na chave de cache. Para ter mais informações, consulte Adicionar cabeçalhos de solicitação do CloudFront.

Cookies

Os cookies em solicitações do visualizador que o CloudFront inclui na chave de cache e nas solicitações da origem. Para cookies, é possível escolher uma das seguintes configurações:

  • None (Nenhum): os cookies nas solicitações do visualizador não são incluídos na chave de cache e não são incluídos automaticamente nas solicitações da origem.

  • All (Todos): todos os cookies em solicitações do visualizador são incluídos na chave de cache e incluídos automaticamente nas solicitações da origem.

  • Include specified cookies (Incluir os cookies especificados): você especifica quais dos cookies nas solicitações do visualizador serão incluídos na chave de cache e incluídos automaticamente nas solicitações da origem.

  • Include all cookies except (Incluir todos os cookies, exceto): você especifica quais dos cookies nas solicitações do visualizador não serão incluídos na chave de cache e não serão incluídos automaticamente nas solicitações da origem. Todos os outros cookies, exceto os que você especificar, são incluídos na chave de cache e incluídos automaticamente nas solicitações da origem.

Ao usar a configuração Include specified cookies (Incluir os cookies especificados) ou Include all cookies except (Incluir todos os cookies, exceto), você especifica cookies pelo nome, não pelo valor. Por exemplo, considere o seguinte cabeçalho Cookie:

Cookie: session_ID=abcd1234

Nesse caso, você especifica o cookie como session_ID, não como session_ID=abcd1234. No entanto, o CloudFront inclui o cookie completo, incluindo o seu valor, na chave de cache e nas solicitações da origem.

Strings de consulta

As strings de consulta de URL nas solicitações do visualizador que o CloudFront inclui na chave de cache e nas solicitações de origem. Para strings de consulta, é possível escolher uma das seguintes configurações:

  • None (Nenhuma): as strings de consulta nas solicitações do visualizador não são incluídas na chave do cache e não são incluídas automaticamente nas solicitações de origem.

  • All (Todas): todas as strings de consulta em solicitações do visualizador são incluídas na chave de cache e também são incluídas automaticamente nas solicitações de origem.

  • Include specified query strings (Incluir as strings de consulta especificadas): você especifica quais strings de consulta nas solicitações do visualizador serão incluídas na chave de cache e incluídas automaticamente nas solicitações de origem.

  • Include all query strings except (Inclui todas as strings de consulta, exceto): você especifica quais das strings de consulta nas solicitações do visualizador não serão incluídas na chave de cache e não serão incluídas automaticamente nas solicitações da origem. Todas as outras strings de consulta, com exceção das que você especificar, são incluídas na chave de cache e incluídas automaticamente nas solicitações da origem.

Ao usar a configuração Include specified query strings (Incluir as strings de consulta especificadas) ou Include all query strings except (Incluir todas as strings de consulta, exceto), você especifica as strings de consulta pelo nome, não pelo valor. Por exemplo, considere o seguinte caminho do URL:

/content/stories/example-story.html?split-pages=false

Nesse caso, você especifica a string de consulta como split-pages, não como split-pages=false. No entanto, o CloudFront inclui a string de consulta completa, incluindo seu valor, na chave de cache e nas solicitações de origem.

Suporte à compactação

Essas configurações permitem que o CloudFront solicite e armazene em cache objetos compactados nos formatos de compactação Gzip ou Brotli, quando o visualizador for compatível com eles. Essas configurações também permitem que a compactação do CloudFront funcione. Os visualizadores indicam sua compatibilidade com esses formatos de compactação com o cabeçalho HTTP Accept-Encoding.

nota

Os navegadores da Web Chrome e Firefox são compatíveis com a compactação Brotli somente quando a solicitação é enviada usando HTTPS. Esses navegadores não são compatíveis com o Brotli com solicitações HTTP.

Habilite essas configurações quando qualquer uma das seguintes situações for verdadeira:

  • Sua origem retorna objetos compactados Gzip quando os visualizadores são compatíveis com ele (as solicitações contêm o cabeçalho HTTP Accept-Encoding com gzip como um valor). Nesse caso, use a configuração Gzip enabled (Habilitada para Gzip) (defina EnableAcceptEncodingGzip como true na API do CloudFront, nos AWS SDKs, na AWS CLI ou no AWS CloudFormation).

  • A origem retorna objetos compactados Brotli quando os visualizadores são compatíveis com ele (as solicitações contêm o cabeçalho HTTP Accept-Encoding com br como um valor). Nesse caso, use a configuração Brotli enabled (Habilitada para Brotli) (defina EnableAcceptEncodingBrotli como true na API do CloudFront, nos AWS SDKs, na AWS CLI ou no AWS CloudFormation).

  • O comportamento do cache ao qual esta política de cache está anexada é configurado com Compactação do CloudFront. Nesse caso, é possível habilitar o cache para Gzip ou Brotli ou ambos. Quando a compactação do CloudFront está habilitada, habilitar o cache para os dois formatos pode ajudar a reduzir os custos de transferência de dados para a internet.

nota

Se você habilitar o armazenamento em cache para um ou os dois formatos de compactação, não inclua o cabeçalho Accept-Encoding em uma política de solicitação de origem associada ao mesmo comportamento de cache. O CloudFront sempre inclui esse cabeçalho em solicitações da origem quando o cache está habilitado para qualquer um desses formatos, portanto, incluir Accept-Encoding em uma política de solicitação de origem não tem efeito.

Se o servidor de origem não retornar objetos compactados por Gzip ou Brotli, ou o comportamento do cache não estiver configurado com compactação do CloudFront, não habilite o cache para objetos compactados. Se você o habilitar, a taxa de acertos do cache poderá diminuir.

A explicação a seguir mostra como essas configurações afetam uma distribuição do CloudFront. Todas as situações descritas a seguir partem do pressuposto de que a solicitação do visualizador contém o cabeçalho Accept-Encoding. Quando a solicitação do visualizador não inclui o cabeçalho Accept-Encoding, o CloudFront não inclui esse cabeçalho na chave de cache e não o inclui na solicitação de origem correspondente.

Quando o armazenamento em cache de objetos compactados está habilitado para os dois formatos de compactação

Se o visualizador for compatível com Gzip e Brotli, ou seja, se os valores gzip e br estiverem no cabeçalho Accept-Encoding na solicitação do visualizador, o CloudFront fará o seguinte:

  • Normaliza o cabeçalho como Accept-Encoding: br,gzip e inclui o cabeçalho normalizado na chave de cache. A chave de cache não inclui outros valores que estavam no cabeçalho Accept-Encoding enviado pelo visualizador.

  • Se o ponto de presença tiver um objeto compactado Brotli ou Gzip no cache que corresponda à solicitação e não tiver expirado, o ponto de presença retornará o objeto ao visualizador.

  • Se o local da borda não tiver um objeto compactado por Brotli ou Gzip no cache, que corresponda à solicitação e não esteja expirado, o CloudFront incluirá o cabeçalho normalizado (Accept-Encoding: br,gzip) na solicitação de origem correspondente. A solicitação de origem não incluirá outros valores que estavam no cabeçalho Accept-Encoding enviado pelo visualizador.

Se o visualizador for compatível com um formato de compactação, mas não com o outro, por exemplo, se gzip for um valor no cabeçalho Accept-Encoding na solicitação do visualizador, mas br não for, o CloudFront fará o seguinte:

  • Normaliza o cabeçalho como Accept-Encoding: gzip e inclui o cabeçalho normalizado na chave de cache. A chave de cache não inclui outros valores que estavam no cabeçalho Accept-Encoding enviado pelo visualizador.

  • Se o ponto de presença tiver um objeto compactado Gzip no cache que corresponda à solicitação e não tiver expirado, o ponto de presença retornará o objeto ao visualizador.

  • Se o local da borda não tiver um objeto compactado por Gzip no cache, que corresponda à solicitação e não esteja expirado, o CloudFront incluirá o cabeçalho normalizado (Accept-Encoding: gzip) na solicitação de origem correspondente. A solicitação de origem não incluirá outros valores que estavam no cabeçalho Accept-Encoding enviado pelo visualizador.

Para entender o que o CloudFront fará se o visualizador for compatível com Brotli, mas não com Gzip, substitua os dois formatos de compactação um pelo outro no exemplo anterior.

Se o visualizador não for compatível com o Brotli ou com o Gzip, ou seja, o cabeçalho Accept-Encoding na solicitação do visualizador não contiver br ou gzip como valores, o CloudFront:

  • Não incluirá o cabeçalho Accept-Encoding na chave de cache.

  • Incluirá Accept-Encoding: identity na solicitação de origem correspondente. A solicitação de origem não incluirá outros valores que estavam no cabeçalho Accept-Encoding enviado pelo visualizador.

Quando o armazenamento em cache de objetos compactados está habilitado para um formato de compactação, mas não o outro

Se o visualizador for compatível com o formato para o qual o cache está habilitado, por exemplo, se o armazenamento em cache de objetos compactados estiver habilitado para Gzip, e o visualizador for compatível com o Gzip (gzip for um dos valores no cabeçalho Accept-Encoding na solicitação do visualizador), o CloudFront fará o seguinte:

  • Normaliza o cabeçalho como Accept-Encoding: gzip e inclui o cabeçalho normalizado na chave de cache.

  • Se o ponto de presença tiver um objeto compactado Gzip no cache que corresponda à solicitação e não tiver expirado, o ponto de presença retornará o objeto ao visualizador.

  • Se o local da borda não tiver um objeto compactado por Gzip no cache, que corresponda à solicitação e não esteja expirado, o CloudFront incluirá o cabeçalho normalizado (Accept-Encoding: gzip) na solicitação de origem correspondente. A solicitação de origem não incluirá outros valores que estavam no cabeçalho Accept-Encoding enviado pelo visualizador.

Esse comportamento é o mesmo quando o visualizador é compatível com o Gzip e o Brotli (o cabeçalho Accept-Encoding na solicitação do visualizador inclui gzip e br como valores), porque nesse cenário, o armazenamento em cache de objetos compactados para Brotli não está habilitado.

Para entender o que o CloudFront fará se o armazenamento em cache de objetos compactados estiver habilitado para Brotli, mas não para Gzip, substitua os dois formatos de compactação um pelo outro no exemplo anterior.

Se o visualizador não for compatível com o formato de compactação para o qual o cache está habilitado (o cabeçalho Accept-Encoding na solicitação do visualizador não contiver o valor desse formato), o CloudFront:

  • Não incluirá o cabeçalho Accept-Encoding na chave de cache.

  • Incluirá Accept-Encoding: identity na solicitação de origem correspondente. A solicitação de origem não incluirá outros valores que estavam no cabeçalho Accept-Encoding enviado pelo visualizador.

Quando o armazenamento em cache de objetos compactados está desabilitado para os dois formatos de compactação

Quando o armazenamento em cache de objetos compactados está desabilitado para os dois formatos de compactação, o CloudFront trata o cabeçalho Accept-Encoding da mesma forma como qualquer outro cabeçalho HTTP na solicitação do visualizador. Por padrão, ele não está incluído na chave de cache e não está incluído nas solicitações de origem. É possível incluí-lo na lista de cabeçalhos em uma política de cache ou em uma política de solicitação de origem como qualquer outro cabeçalho HTTP.