Cache keys
Consulte como a Azion monta uma cache key a partir de uma requisição, o que cada variação acrescenta e os headers de debug que mostram a key e o status.
Uma cache key é a entrada de índice sob a qual o Cache armazena um objeto. A Azion a monta a partir da requisição: o scheme, o host, o path e as variações que um cache setting acrescenta. Uma requisição cuja key casa com um objeto armazenado é respondida pela cópia. Caso contrário, a requisição vai à origem, e a Azion armazena a resposta sob essa key. Para o processo de busca, consulte Expiração e atualização; para os campos que acrescentam variações, consulte Cache settings.
Formato da key
A key padrão concatena quatro elementos da URI da requisição, nesta ordem:
| Elemento | Exemplo |
|---|---|
| Scheme | https |
| Host | static.example.com |
| Path | /page/site.js |
| Separador de variação e variações | @@Mobile |
A query string não faz parte da key padrão: https://static.example.com/page/site.js?city=city&name=name gera a mesma key que a URI sem ela. A variação por query string, em Variações, a acrescenta.
A URI https://static.example.com/page/site.js gera a key httpsstatic.example.com/page/site.js. As keys diferenciam maiúsculas de minúsculas: caracteres maiúsculos e minúsculos são distintos. Quando um cache setting ativa uma variação, a key pode terminar com o separador @@, como em httpsstatic.example.com/page/site.js@@. Cada variação listada em Variações é acrescentada depois desse separador.
Variações
Uma variação é acrescentada à key padrão, de modo que uma URI pode manter mais de um objeto no cache. A tabela lista o que cada variação acrescenta e a key que ela gera.
| Variação | O que é acrescentado | Exemplo de key |
|---|---|---|
| Requisição complexa | O método da requisição, como prefixo da key. Uma requisição GET ou HEAD não recebe prefixo. | optionshttpsstatic.example.com/page |
| Query string | O separador ? e os argumentos que o cache setting nomeia, na ordem em que a requisição os envia. Com Sort ativo, ?name=name&city=city e ?city=city&name=name compartilham uma key, com os argumentos em ordem alfabética. | httpstatic.example.com/page?name=name, httpstatic.example.com/page?city=city&name=name, httpstatic.example.com/page?name=name&city=city |
| Cookies | @@ e, em seguida, cada nome e valor de cookie que o cache setting nomeia, seguidos de ;. A variação vazia, sem valor de cookie, é @@;. | httpwww.example.com/@@;, httpwww.example.com/@@user=user; |
| Device group | @@ e o nome do device group. | httpwww.example.com/@@Mobile |
| Image Processor | A query string ims e o formato de imagem convertido depois de @@. | httpsstatic.example.com/static/images/image_1.jpg?ims=880x@@webp |
| Large File Optimization | @@bytes=<início>-<fim> para cada fragmento, de modo que cada fragmento tem sua própria key. Um arquivo de 2.097.151 bytes gera duas keys. | httpsstatic.example.com/media/file.mp4@@bytes=0-1048575, httpsstatic.example.com/media/file.mp4@@bytes=1048576-2097151 |
POST ou OPTIONS em cache | @@ e o hash MD5 do corpo da requisição. | httpsdynamic.example.com/path@@md5_of_post_arguments, httpsdynamic.example.com/path@@md5_of_options_arguments |
Os campos de query string e de cookie diferenciam maiúsculas de minúsculas, então user e User são duas variações. Para uma requisição POST ou OPTIONS em cache, o corpo da requisição faz parte da key. As variações por query string, por cookie, por device group e por método da requisição são o recurso chamado Advanced Cache Key. Para saber o que cada behavior faz com a key, consulte Configurações do Application Accelerator.
Estes controles geram as variações:
- Cache vary by Method coloca em cache requisições
POSTeOPTIONS. - Cache vary by Query String, com seu Behavior e seu Sort, define a variação por query string.
- Cache vary by Cookies define a variação por cookie.
- Cache vary by Devices define a variação por device group, para os grupos definidos em Device Groups.
- Large file optimization divide o objeto em fragmentos, cada um com sua própria key.
- O Image Processor acrescenta a variação de formato.
Para o campo por trás de cada controle, consulte Cache settings.
Headers de debug
Para ler o status e a key de uma resposta, envie a requisição com o header Pragma: azion-debug-cache. A resposta carrega dois headers. O x-cache carrega o status de cache, o endereço IP do servidor que respondeu a requisição e o protocolo. O x-cache-key carrega a key:
Em HTTP/2, os nomes dos headers chegam em minúsculas. Uma resposta que a plataforma não coloca em cache carrega - nos dois headers. Requisições seguidas para um path podem ser respondidas, cada uma, por um servidor diferente, que o x-cache nomeia. Para o procedimento, consulte Verifique o status de cache de uma resposta.
Status de cache
O header x-cache começa com um de oito valores. Cada um nomeia o que o Cache fez com a requisição.
| Status | Significado |
|---|---|
HIT | Conteúdo válido e atualizado entregue pelo cache do data center mais próximo do usuário. A origem não é acessada. |
MISS | O conteúdo não está no cache. A Azion o busca na origem, e a resposta pode ser armazenada para requisições seguintes. |
EXPIRED | A cópia em cache passou do seu TTL. Quando a origem responde, a resposta atualiza a cópia para as requisições seguintes. |
STALE | O stale cache está ativo, a cópia expirou e a origem não respondeu, então a Azion entrega a cópia expirada. Para mais informações, consulte Expiração e atualização. |
UPDATING | A cópia expirou, e a Azion a entrega enquanto o conteúdo é atualizado a partir da origem. Para mais informações, consulte Expiração e atualização. |
REVALIDATED | A Azion verificou a cópia junto à origem com headers condicionais, e ela ainda estava atual, então a origem não a enviou novamente. |
BYPASS | A requisição foi à origem porque um behavior Bypass Cache se aplica. |
- | Sem status: o conteúdo está restrito de cache. Por exemplo, uma requisição POST quando o cache para POST está desativado. Uma resposta GET ou HEAD que uma função constrói também pode trazê-lo. |