# Configurações do Application Accelerator

[Application Accelerator](/pt-br/documentacao/plataforma/applications/#application-accelerator) é um módulo de [Applications](/pt-br/documentacao/plataforma/applications/), ativado para uma aplicação por vez. O módulo libera os campos de cache que variam a cache key, o cache de respostas `POST` e `OPTIONS` e sete behaviors do [Rules Engine](/pt-br/documentacao/plataforma/applications/rules-engine/). Esta página traz o nome, o tipo e o padrão de cada campo, e a interface que o define.

---

## Ativação do módulo

O módulo vem desativado por padrão, e todas as interfaces abaixo acionam o mesmo controle. O controle pertence à aplicação, não a um cache setting, portanto uma aplicação pode tê-lo ativado enquanto outra não.

| Interface                                                              | Onde você define                                                | Campo ou flag                             |
| ---------------------------------------------------------------------- | --------------------------------------------------------------- | ----------------------------------------- |
| Azion Console                                                          | A seção **Modules** da aba **Main Settings** de uma aplicação   | O switch **Application Accelerator**      |
| Azion API v4                                                           | `PATCH /workspace/applications/{id}`                            | `modules.application_accelerator.enabled` |
| [Azion CLI](/pt-br/documentacao/devtools/cli/)                         | `azion update application`                                      | `--application-accelerator`               |
| [`azion.config.js`](/pt-br/documentacao/devtools/cli/azion-config-js/) | O objeto `AzionApplication`                                     | `applicationAcceleratorEnabled`           |
| [Azion Lib](/pt-br/documentacao/devtools/azion-lib/application/)       | Os dados enviados na criação ou na atualização de uma aplicação | `application_acceleration`                |

`modules.application_accelerator.enabled` é um booleano e assume `false` por padrão. `applicationAcceleratorEnabled` e `application_acceleration` são booleanos, e a flag do Azion CLI recebe uma string.

O [Azion Terraform Provider](/pt-br/documentacao/devtools/terraform/) gerencia o recurso de aplicação que carrega o módulo. Ativar um módulo pode gerar custos relacionados ao uso. Para mais informações, consulte [Preços](/pt-br/documentacao/fundamentos/precos/#application-accelerator).

---

## Cache variation

Application Accelerator adiciona o objeto `modules.application_accelerator` a um cache setting, e os campos dele configuram **Advanced Cache Key**. Eles decidem quais partes de uma requisição, além da URL, produzem um objeto separado em cache. Em Azion Console, os mesmos campos ficam na seção **Application Accelerator** de um cache setting. Uma variação acrescenta o separador `@@` à cache key. Para o formato de uma cache key, consulte [Formato da cache key](/pt-br/documentacao/plataforma/applications/cache/cache-keys/#formato-da-key).

| Campo                                    | Tipo                                                  | Padrão   | Controle no Console                                   | O que define                                                             |
| ---------------------------------------- | ----------------------------------------------------- | -------- | ----------------------------------------------------- | ------------------------------------------------------------------------ |
| `cache_vary_by_method`                   | array de enum, no máximo 2 valores: `options`, `post` | `[]`     | **Cache vary by Method**, um checkbox por método      | Os métodos de requisição cujas respostas são armazenadas em cache.       |
| `cache_vary_by_querystring.behavior`     | enum: `ignore`, `all`, `allowlist`, `denylist`        | `ignore` | **Cache vary by Query String** > **Behavior**         | O modo que decide como a query string varia a cache key.                 |
| `cache_vary_by_querystring.fields`       | array de string                                       | `[]`     | A lista de campos em **Cache vary by Query String**   | Os argumentos de query string aos quais o modo se aplica.                |
| `cache_vary_by_querystring.sort_enabled` | boolean                                               | `false`  | **Cache vary by Query String** > **Sort**             | Se as variações se agrupam sob uma única cache key, em ordem alfabética. |
| `cache_vary_by_cookies.behavior`         | enum: `ignore`, `all`, `allowlist`, `denylist`        | `ignore` | **Cache vary by Cookies** > **Behavior**              | O modo que decide como os cookies variam a cache key.                    |
| `cache_vary_by_cookies.cookie_names`     | array de string                                       | `[]`     | A lista de cookies em **Cache vary by Cookies**       | Os cookies aos quais o modo se aplica.                                   |
| `cache_vary_by_devices.behavior`         | enum: `ignore`, `allowlist`                           | `ignore` | **Cache vary by Devices** > **Behavior**              | O modo que decide como os device groups variam a cache key.              |
| `cache_vary_by_devices.device_group`     | array de integer                                      | `[]`     | A lista de device groups em **Cache vary by Devices** | Os device groups aos quais o modo se aplica.                             |

Cada dropdown **Behavior** exibe os valores do seu enum com a inicial maiúscula: *Allowlist*, *Denylist*, *Ignore* e *All*.

Um campo do mesmo cache setting fica fora desse objeto e ainda assim depende do módulo:

| Campo                   | Tipo                                  | Padrão | Controle no Console     | O que define                                                                    |
| ----------------------- | ------------------------------------- | ------ | ----------------------- | ------------------------------------------------------------------------------- |
| `modules.cache.max_age` | integer, de `0` a `31536000` segundos | `60`   | **Cache** > **Max Age** | Por quanto tempo o cache mantém o objeto. Um valor abaixo de 60 exige o módulo. |

Para os tetos que limitam um cache setting, consulte [Limites](/pt-br/documentacao/plataforma/applications/limites/#application-accelerator).

---

## Flags de cache setting no Azion CLI

`azion create cache-setting` grava os mesmos campos pela linha de comando. Cada flag abaixo define um campo do cache setting.

| Flag                           | Campo que define                     | Padrão   |
| ------------------------------ | ------------------------------------ | -------- |
| `--cache-by-query-string`      | `cache_vary_by_querystring.behavior` | `ignore` |
| `--query-string-fields`        | `cache_vary_by_querystring.fields`   | Nenhum   |
| `--cache-by-cookies`           | `cache_vary_by_cookies.behavior`     | `ignore` |
| `--cookie-names`               | `cache_vary_by_cookies.cookie_names` | Nenhum   |
| `--enable-caching-for-post`    | `post` em `cache_vary_by_method`     | Nenhum   |
| `--enable-caching-for-options` | `options` em `cache_vary_by_method`  | `false`  |

Azion CLI não define a variação por device group, e não define a idade máxima do cache: `--browser-cache-max-age` define apenas o valor do navegador.

---

## HTTP methods

Uma aplicação aceita nativamente `GET` e `HEAD`. Application Accelerator adiciona mais cinco métodos, e as respostas de dois deles podem ser armazenadas em cache por meio de `cache_vary_by_method`.

| Método adicionado pelo módulo | A resposta pode ser armazenada em cache              |
| ----------------------------- | ---------------------------------------------------- |
| `OPTIONS`                     | Sim, quando `cache_vary_by_method` carrega `options` |
| `POST`                        | Sim, quando `cache_vary_by_method` carrega `post`    |
| `PUT`                         | Não                                                  |
| `PATCH`                       | Não                                                  |
| `DELETE`                      | Não                                                  |

Um objeto `POST` ou `OPTIONS` em cache recebe a própria cache key. Para o formato dessa key, consulte [Métodos HTTP em cache](/pt-br/documentacao/plataforma/applications/cache/cache-keys/#variacoes).

---

## Behaviors do Rules Engine

Sete behaviors do Rules Engine exigem Application Accelerator na aplicação que executa a regra. A tabela indexa esses behaviors; [Rules Engine](/pt-br/documentacao/plataforma/applications/rules-engine/#behaviors) traz os argumentos e a sintaxe de cada um.

| Behavior                                                                                               | Fases             | O que faz                                                                                                         |
| ------------------------------------------------------------------------------------------------------ | ----------------- | ----------------------------------------------------------------------------------------------------------------- |
| [Add Cookie](/pt-br/documentacao/plataforma/applications/rules-engine/#add-cookie)                     | Request, Response | Adiciona um cookie ao header `Set-Cookie`.                                                                        |
| [Bypass Cache](/pt-br/documentacao/plataforma/applications/rules-engine/#bypass-cache)                 | Request           | Impede que Azion armazene em cache a resposta da origem, e não altera o cache do navegador.                       |
| [Capture Match Groups](/pt-br/documentacao/plataforma/applications/rules-engine/#capture-match-groups) | Request, Response | Guarda em uma variável temporária o resultado da captura de uma expressão regular sobre um campo da requisição.   |
| [Filter Cookie](/pt-br/documentacao/plataforma/applications/rules-engine/#filter-request-cookie)       | Request, Response | Remove um cookie do header de requisição enviado à origem, ou do header de resposta enviado ao usuário.           |
| [Forward Cookies](/pt-br/documentacao/plataforma/applications/rules-engine/#forward-cookies)           | Request           | Encaminha o header `Set-Cookie` da origem aos usuários, inclusive em um cache hit.                                |
| [Rewrite Request](/pt-br/documentacao/plataforma/applications/rules-engine/#rewrite-request)           | Request           | Altera o caminho do recurso requisitado à origem.                                                                 |
| [Run Function](/pt-br/documentacao/plataforma/applications/rules-engine/#run-function)                 | Request, Response | Executa uma função instanciada na aplicação. Também exige [Functions](/pt-br/documentacao/plataforma/functions/). |

Os criteria de uma regra podem ler `${device_group}`, que também exige o módulo. Para a variável, consulte [Variáveis](/pt-br/documentacao/plataforma/applications/rules-engine/#variaveis), e para os grupos aos quais ela corresponde, consulte [Device Groups](/pt-br/documentacao/plataforma/applications/device-groups/).

[Set Cache Policy](/pt-br/documentacao/plataforma/applications/rules-engine/#set-cache-policy) não exige o módulo. Ele atribui uma política de cache criada em [Cache Settings](/pt-br/documentacao/plataforma/applications/cache/cache-settings/), e é assim que um cache setting alcança uma requisição.

---

## Recursos relacionados

- [Variação de cache](/pt-br/documentacao/plataforma/applications/application-accelerator/variacao-de-cache.md): Como cada um desses campos altera a cache key, e quanto custa uma variação.
- [Primeiros passos](/pt-br/documentacao/plataforma/applications/application-accelerator/primeiros-passos.md): Ative o módulo e crie um cache setting que varia a cache key.
- [Limites](/pt-br/documentacao/plataforma/applications/limites.md#application-accelerator): Os tetos que limitam os valores destas tabelas.
- [Real-Time Purge](/pt-br/documentacao/plataforma/applications/cache/real-time-purge.md): Como purgar um objeto que varia por cookie, query string ou device group.
