# Tiered Cache

O **Tiered Cache** é uma segunda camada de cache entre o [Cache](/pt-br/documentacao/plataforma/applications/#cache) e a sua origem, mantida em uma região. A primeira camada é o cache do data center que respondeu a requisição. A segunda camada é compartilhada por cada data center e mantém objetos por mais tempo do que a primeira.

Quando uma requisição não encontra a cópia na primeira camada, o data center consulta a camada do Tiered Cache antes de consultar a origem. Um objeto buscado uma vez na origem é então entregue a cada data center por essa camada. Você ativa a camada por cache setting, e ela se aplica aos objetos que esse setting coloca em cache. Para o caminho completo da requisição, consulte [Expiração e atualização](/pt-br/documentacao/plataforma/applications/cache/expiracao-e-atualizacao/).

Um miss na primeira camada é respondido pela infraestrutura da Azion em vez da sua origem. A resposta chega com menos latência, e menos requisições chegam à origem. A origem lida com menos carga a um custo de infraestrutura menor, e um objeto permanece em cache por mais tempo. O preço é um salto extra em um miss na primeira camada e um piso no TTL do setting.

---

## Interfaces

O Tiered Cache é um campo de um cache setting, então cada interface que escreve um cache setting o ativa. A tabela nomeia onde o controle fica em cada uma.

| Interface                                         | Onde                                                                                                                                                              | Valor                                                                                                                                                        |
| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [Azion Console](https://console.azion.com/)       | A seção **Cache** do drawer **Create Cache Settings**, na aba **Cache Settings** de uma aplicação em [Applications](/pt-br/documentacao/plataforma/applications/) | O toggle **Tiered Cache**, desativado em um setting novo                                                                                                     |
| [Azion API v4](/pt-br/documentacao/devtools/api/) | `POST /v4/workspace/applications/{application_id}/cache_settings`                                                                                                 | `modules.cache.tiered_cache.enabled`, `true` ou `false`, e `modules.cache.tiered_cache.topology`                                                             |
| [Azion CLI](/pt-br/documentacao/devtools/cli/)    | `azion create cache-setting --file` com o corpo JSON                                                                                                              | O mesmo objeto `tiered_cache`. A flag `--tiered-caching-enabled` sozinha é rejeitada com o erro `21001`, porque nenhuma flag define o comportamento de cache |
| `azion.config.js`                                 | Uma entrada do array `cache`, do tipo `AzionCache`                                                                                                                | `tieredCache: { enabled, topology }`                                                                                                                         |

Duas condições se aplicam ao setting. O seu comportamento de cache precisa ser *Override cache behavior*, porque a API rejeita o Tiered Cache sob *Honor cache policies* com o erro `21001`. O seu **Max Age** precisa ser de pelo menos 3 segundos, ou a API retorna o erro `21020`.

O Tiered Cache está incluído em todos os planos de serviço e é ativado por cache setting. Para todos os campos de um cache setting, com o título e a correção de cada erro, consulte [Cache settings](/pt-br/documentacao/plataforma/applications/cache/cache-settings/). Para os passos no Console que aplicam um setting a um path, consulte [Configure políticas de cache para uma aplicação](/pt-br/documentacao/guias/performance-e-confiabilidade/cache-e-purge/cache-settings/).

---

## Topology

A `topology` de um cache setting nomeia a região que hospeda a camada do Tiered Cache para os objetos que esse setting coloca em cache. A API, o corpo JSON da CLI e o `azion.config.js` aceitam os três valores abaixo. Qualquer outro valor retorna o erro `10039`, `Invalid Choice`.

| Valor            | Significado           |
| ---------------- | --------------------- |
| `nearest-region` | Região mais próxima   |
| `br-east-1`      | Brasil, leste         |
| `us-east-1`      | Estados Unidos, leste |

---

## TTL

O tempo de vida (TTL) de um objeto na camada do Tiered Cache é o **Max Age** do seu cache setting. Enquanto o toggle está ativo, esse campo carrega um piso de 3 segundos. Um setting novo começa em 60 segundos, o padrão do **Max Age** no Console, na API e na CLI. Por exemplo, um **Max Age** de 2 segundos com o Tiered Cache ativo é rejeitado com o erro `21020`. O mesmo setting com 3 segundos é aceito. O Tiered Cache é feito para objetos que permanecem em cache por muito tempo.

O teto é o teto do próprio TTL de cache. Para o valor e o erro além dele, consulte [Limites de Applications](/pt-br/documentacao/plataforma/applications/limites/#cache).

---

## Purge

O [Real-Time Purge](/pt-br/documentacao/plataforma/applications/cache/real-time-purge/) remove um objeto da camada do Tiered Cache antes do fim do seu TTL. A camada é `tiered_cache` no corpo da API e na flag `--layer` do `azion purge`. Um purge por cache key é o único tipo que a alcança. Um purge por URL ou por wildcard com essa camada retorna o erro `30001`, `Invalid Purge Layer For Purge Type`.

Para remover um objeto mantido nas duas camadas, purgue primeiro o Tiered Cache e depois o Cache, para que a primeira camada não seja reabastecida por uma cópia desatualizada do Tiered Cache. Para os passos no Console, na API e na CLI, consulte [Purgue conteúdo em cache](/pt-br/documentacao/guias/performance-e-confiabilidade/cache-e-purge/purgar-conteudo-em-cache/).

---

## Bypass Cache

Uma regra com [Bypass Cache](/pt-br/documentacao/plataforma/applications/rules-engine/#bypass-cache) no Rules Engine afeta o cache da Azion, e não a camada do Tiered Cache. Uma aplicação com cache settings de Tiered Cache ativos continua a colocar objetos em cache nessa camada pelo TTL mínimo. Para o sintoma que isso produz e o que fazer a respeito, consulte [Solucionar problemas de Applications](/pt-br/documentacao/plataforma/applications/solucao-de-problemas/#cache).

---

## Observabilidade

O [Real-Time Metrics](/pt-br/documentacao/plataforma/real-time-metrics/) carrega um dataset **Tiered Cache** ao lado do seu dataset de Cache. O [Real-Time Events](/pt-br/documentacao/plataforma/real-time-events/) também carrega um dataset **Tiered Cache**. Os dados que o Tiered Cache transferiu são consultados por GraphQL. Para a consulta e a sua resposta, consulte [Consulte dados de uso do Tiered Cache](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-dados-de-uso-tiered-cache-com-graphql/).

---

## Recursos relacionados

- [Cache settings](/pt-br/documentacao/plataforma/applications/cache/cache-settings.md): Todos os campos de um cache setting, com as linhas do Tiered Cache, os erros e o corpo da requisição.
- [Expiração e atualização](/pt-br/documentacao/plataforma/applications/cache/expiracao-e-atualizacao.md): O caminho que uma requisição percorre pela primeira camada, pela camada do Tiered Cache e pela origem.
- [Limites de Applications](/pt-br/documentacao/plataforma/applications/limites.md#cache): O piso e o teto do TTL com o Tiered Cache ativo, e o que cada plano inclui.
- [Purgue conteúdo em cache](/pt-br/documentacao/guias/performance-e-confiabilidade/cache-e-purge/purgar-conteudo-em-cache.md): Os passos no Console, na API e na CLI que purgam um objeto da camada do Tiered Cache por cache key.
