

# Noções básicas sobre políticas de cache
<a name="cache-key-understand-cache-policy"></a>

É 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](using-managed-cache-policies.md).

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
<a name="cache-key-understand-cache-policy-info"></a>

**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)
<a name="cache-key-understand-cache-policy-ttl"></a>

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 obter mais informações, consulte [Gerenciar o tempo de permanência do conteúdo no cache (expiração)](Expiration.md).  
Se seu TTL mínimo for maior que 0, o CloudFront armazenará em cache o conteúdo por pelo menos a duração epedificada no TTL mínimo da política de cache, mesmo que as diretivas `Cache-Control: no-cache`, `no-store` ou `private` estejam presentes nos cabeçalhos de origem.

**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 obter mais informações, consulte [Gerenciar o tempo de permanência do conteúdo no cache (expiração)](Expiration.md).

**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 obter mais informações, consulte [Gerenciar o tempo de permanência do conteúdo no cache (expiração)](Expiration.md).

**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
<a name="cache-key-understand-cache-policy-settings"></a>

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](controlling-origin-requests.md).

As configurações de chave de cache incluem:
+ [Cabeçalhos](#cache-policy-headers)
+ [Cookies](#cache-policy-cookies)
+ [Strings de consulta](#cache-policy-query-strings)
+ [Suporte à compactação](#cache-policy-compressed-objects)

**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 obter mais informações, consulte [Adicionar cabeçalhos de solicitação do CloudFront](adding-cloudfront-headers.md).

**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.  
Com relação às configurações de chave de cache, o CloudFront trata o caractere asterisco (`*`) dos cabeçalhos, strings de consulta e cookies como uma string literal, não como um curinga.

**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](ServingCompressedFiles.md) funcione. Os visualizadores indicam sua compatibilidade com esses formatos de compactação com o cabeçalho HTTP `Accept-Encoding`.  
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 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 CloudFormation).
+ O comportamento do cache ao qual esta política de cache está anexada é configurado com [Compactação do CloudFront](ServingCompressedFiles.md). 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.
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](controlling-origin-requests.md) 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](cache-hit-ratio.md) 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.