# Como configurar a Advanced Cache Key para Applications

O Azion **Application Accelerator** habilita a funcionalidade [Advanced Cache Key](/pt-br/documentacao/produtos/build/applications/cache-settings/#advanced-cache-key), que permite que você crie regras de cache com base em Query Strings da URL e Cookies. Você pode aplicar essas regras a uma aplicação dinâmica usando o [Rules Engine](/pt-br/documentacao/produtos/build/applications/rules-engine/).

Para ativar a **Advanced Cache Key** para uma application:

1. Acesse o [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Applications**.
2. Selecione a application que deseja configurar ou [crie uma nova](/pt-br/documentacao/produtos/guias/build/criar-uma-aplicacao/).
3. Na aba **Main settings**, na seção **Modules**, ative a opção **Application Accelerator**.
4. Clique no botão **Save**.

:::tip
Se você quiser definir configurações de cache para conteúdo estático, consulte o guia [Como configurar políticas de cache para Applications](/pt-br/documentacao/produtos/guias/cache-settings/).
:::

---

## Crie regras avançadas de cache para conteúdo dinâmico com base em Query Strings

Para ilustrar melhor o uso da **Advanced Cache Key** com base em Query Strings, suponha que sua aplicação tem a seguinte URL: `dominio.com/pagina?cidade=nome_cidade`.

A URI `/pagina` tem uma API, chamada pela Query String `?cidade=nome_cidade`, que lista o conteúdo dependendo da cidade do usuário. O conteúdo da página é atualizado automaticamente a cada cinco minutos.

Para combinar o TTL do cache com o tempo de atualização do conteúdo chamado pelo campo `cidade`:

1. Acesse o [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Applications**.
2. Selecione a aplicação e verifique se o **Application Accelerator** está ativo.
3. Clique na aba **Cache Settings**.
4. Clique no botão **+ Cache Setting**.
5. Dê à sua configuração um nome fácil de lembrar.
6. Tanto na seção **Browser Cache Settings** quanto em **Cache Settings**:
   - Marque a opção **Override Cache Settings**.
   - Defina o **Maximum TTL (seconds)** para `300` (5 minutos).
7. Na seção **Advanced Cache Key**, defina seu **Cache by Query String** da seguinte forma:
   - Selecione a opção **Content varies by some Query String fields (Allowlist)**.
   - Nos **Query String fields**, insira o valor `cidade`.
   - Este campo diferencia letras maiúsculas de minúsculas e as trata de forma distinta ao armazenar objetos no cache.
8. Clique no botão **Save**.

Agora, há um objeto de política de cache com a Query String `cidade` que pode ser ativado no **Rules Engine** da seguinte forma:

1. Clique na aba **Rules Engine**.
2. Clique no botão **+ Rule**.
3. Dê à sua configuração um nome fácil de lembrar.
4. Selecione **Request Phase**.
5. Na seção **Criteria**, defina os critérios que acionam o comportamento sempre que o URI `/pagina` for acessado da seguinte forma:
   - If `${uri}` *starts with* `/pagina`
6. Na seção **Behaviors**:
   - Selecione o comportamento **Set Cache Policy**.
   - Selecione a configuração de cache que você criou para a Query String `cidade`.
7. Clique no botão **Save**.

Pronto. Agora o conteúdo será armazenado em cache no navegador e na origem pelo mesmo tempo que a API leva para atualizar sua aplicação.

---

## Crie regras avançadas de cache para conteúdo dinâmico com base em Cookies

Se sua aplicação usa autenticação baseada em cookies, você pode usar a **Advanced Cache Key** para garantir que o conteúdo em cache varie de acordo com cada cookie de sessão.

Por exemplo, cada vez que um usuário faz login em sua conta em uma application, ele é direcionado para uma página `/perfil`. O conteúdo da página de perfil do usuário deve variar dependendo de um cookie chamado `session_cookie` que passa a ter um valor após um login bem-sucedido.

Para garantir que todos os usuários vejam uma página diferente dependendo do cookie de sessão:

1. Acesse o [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Applications**.
2. Selecione a aplicação e verifique se o **Application Accelerator** está ativo.
3. Clique na aba **Cache Settings**.
4. Clique no botão **+ Cache Setting**.
5. Dê à sua configuração um nome fácil de lembrar.
6. Configure **Browser Cache Settings** e **Cache Settings** conforme desejado.
7. Na seção **Advanced Cache Key**, defina seu **Cache by Cookie** da seguinte forma:
   - Selecione a opção **Content varies by some Cookies**.
   - Em **Cookie nomes**, insira o valor `session_cookie`.
   - Este campo diferencia letras maiúsculas de minúsculas e as trata de forma distinta ao armazenar objetos no cache.
8. Clique no botão **Save**.

O próximo passo é ativar uma regra no **Rules Engine** para a página `/perfil` da seguinte forma:

1. Clique na aba **Rules Engine**.
2. Clique no botão **New Rule**
3. Dê à sua configuração um nome fácil de lembrar. 
4. Selecione **Request Phase**.
5. Na seção **Criteria**, defina os critérios que acionam o comportamento sempre que a URI `/perfil` for acessada da seguinte forma:
   - If `${uri}` *starts with* `/perfil`
6. Na seção **Behaviors**:
   - Selecione o comportamento **Set Cache Policy**.
   - Selecione a configuração de cache que você criou para o `session_cookie`.
7. Clique no botão **Save**.

Pronto. Agora o objeto em cache para a página de perfil irá variar com base no cookie de sessão do usuário.

---