Granular Caching usa chaves de cache avançadas para armazenar diferentes versões de um mesmo recurso com base em informações específicas da requisição HTTP — permitindo segmentação de conteúdo sem depender apenas da URL.
O que é Granular Caching?
Granular Caching é a capacidade de definir variações de cache com base em atributos específicos da requisição HTTP. Em vez de tratar todas as requisições para uma mesma URL como idênticas, essa estratégia permite criar versões distintas da resposta conforme o contexto da requisição.
Diferentemente de um cache mais básico, em que a chave costuma ser composta principalmente pela URL, o Granular Caching usa chaves de cache avançadas para incluir critérios adicionais de segmentação.
Essa técnica responde a uma pergunta específica:
“Como diferenciar corretamente versões distintas do mesmo recurso em cache?”
Enquanto o Micro Caching define por quanto tempo uma resposta pode ser reutilizada, e o Tiered Caching define em quantas camadas o cache será organizado, o Granular Caching define como construir a chave que separa uma variante da outra.
Como funciona o Granular Caching
Quando uma requisição chega a um ponto de presença da infraestrutura distribuída, o sistema constrói uma chave de cache — um identificador que determina se já existe uma resposta compatível armazenada para aquela requisição.
Em um cache básico, essa chave pode ser apenas a URL ou a URL com poucos elementos adicionais. Em Granular Caching, a chave pode incorporar critérios extras de segmentação:
Chave de cache básica: /api/produto/123Chave de cache granular: /api/produto/123 + header:Device-Type + header:Accept-LanguageIsso permite que diferentes dispositivos, idiomas ou segmentos recebam versões distintas da mesma URL sem que uma resposta substitua incorretamente a outra.
Importante: Granular Caching não elimina automaticamente o risco de vazamento de dados personalizados. A segurança depende da escolha correta da chave, da elegibilidade do conteúdo e das regras de bypass para respostas sensíveis.
Chaves de cache avançadas: opções de segmentação
Segmentação por header
Armazena versões diferentes de uma resposta com base em cabeçalhos HTTP como Device-Type, Accept-Language ou User-Segment.
Casos de uso:
- servir conteúdo diferente para usuários mobile e desktop;
- variar respostas por idioma ou localidade;
- separar respostas por tipo de cliente, canal ou segmento.
Exemplo:
URL: /api/produto/123Header: Device-Type = mobileChave de cache: /api/produto/123:Device-Type:mobileSegmentação por cookie
Pode ser usada para isolar respostas quando existe personalização real vinculada a um identificador presente em cookie.
Casos de uso:
- testes A/B por grupo;
- preferências persistidas do usuário;
- experiências personalizadas com segmentação controlada.
Exemplo:
URL: /experiencia/homeCookie: experiment_group = BChave de cache: /experiencia/home:experiment_group:BAtenção: segmentar cache por cookie exige muito cuidado. Cookies de sessão, autenticação ou identificação individual podem criar cardinalidade excessiva e aumentar o risco de exposição indevida de conteúdo se a configuração estiver incorreta.
Segmentação por query string
Permite diferenciar respostas de acordo com parâmetros que realmente alteram o conteúdo retornado.
Casos de uso:
- resultados de busca com filtros diferentes;
- listagens ordenadas por preço, nome ou relevância;
- páginas com paginação ou parâmetros funcionais de API.
Exemplo:
URL: /api/produtos?categoria=sapatos&ordem=precoChave de cache: /api/produtos:categoria:sapatos:ordem:precoImportante: nem toda query string deve entrar na chave. Parâmetros de tracking, como
utm_source, normalmente não deveriam gerar variantes de cache se não alteram a resposta funcional.
Granular Caching vs. outras estratégias de cache
| Estratégia | Pergunta que responde | Foco |
|---|---|---|
| Micro Caching | Por quanto tempo reutilizar a resposta? | TTL curto para dados dinâmicos |
| Tiered Caching | Em quantas camadas organizar o cache? | Hierarquia entre pontos de presença, camada intermediária e origem |
| Granular Caching | Como diferenciar variantes do mesmo recurso? | Construção da chave por contexto da requisição |
| Selective Caching | Quais respostas devem entrar em cache? | Elegibilidade por rota, método, status ou contexto |
Todas essas estratégias são complementares — não excludentes.
Combinando Granular Caching com Micro Caching
Granular Caching e Micro Caching trabalham juntos para fornecer tanto segmentação correta quanto controle de atualização:
- Granular Caching define a chave — qual combinação de headers, cookies ou query strings diferencia corretamente cada variante
- Micro Caching define a janela de tempo — por quantos segundos a resposta pode ser reutilizada
- Bypass seletivo define o limite de segurança — operações críticas e respostas sensíveis não devem ser cacheadas
Exemplo de fluxo:
Requisição de frete ↓[Chave granular: prefixo de CEP + Device-Type] ↓[Micro Cache TTL: 5 segundos] ↓Cache HIT → resposta imediataCache MISS → origem → popula cache → respostaQuando usar Granular Caching
Use Granular Caching quando:
- a mesma URL precisa de respostas diferentes para dispositivos, idiomas ou segmentos;
- a resposta muda com base em cabeçalhos ou parâmetros funcionais da requisição;
- você precisa manter variantes distintas de conteúdo sem duplicar rotas;
- existem experimentos, regionalização ou personalização controlada;
- fragmentos contextuais podem ser cacheados com segurança e segmentação adequada.
Evite ou limite Granular Caching quando:
- o conteúdo é idêntico para todos os usuários;
- a segmentação criaria variantes demais e reduziria o cache hit ratio;
- os critérios escolhidos não alteram de fato a resposta;
- a resposta contém dados altamente sensíveis ou estritamente individuais;
- o custo operacional de manter múltiplas variantes supera o ganho de desempenho.
Melhores práticas para Granular Caching
1. Mantenha a chave focada no que realmente muda a resposta
Inclua apenas critérios de segmentação que afetem o conteúdo entregue. Critérios desnecessários aumentam fragmentação e reduzem eficiência do cache.
2. Evite cardinalidade excessiva
Nem todo cookie, cabeçalho ou parâmetro deve entrar na chave. Quanto maior a cardinalidade, menor a chance de reutilização da resposta.
3. Normalize a construção da chave
Defina ordem, formato e regras consistentes para os componentes da chave. Isso evita múltiplas variantes para o que deveria ser a mesma resposta.
4. Diferencie personalização leve de conteúdo estritamente individual
Conteúdo por idioma, dispositivo ou grupo experimental costuma ser um bom candidato. Já conteúdo fortemente individualizado exige muito mais cautela — e, em muitos casos, não deve usar cache compartilhado.
5. Implemente invalidação adequada
Quando um dado muda, invalide apenas as variantes afetadas sempre que possível, em vez de limpar todo o cache.
6. Monitore hit ratio por variante
Acompanhar o desempenho por tipo de chave ajuda a identificar supersegmentação, baixa reutilização ou regras de variação mal definidas.
7. Combine com bypass seletivo
Garanta que operações como autenticação, autorização de pagamento e finalização de pedido ignorem explicitamente o cache, independentemente da lógica de segmentação.
Exemplo prático: recomendações contextualizadas
Uma plataforma de e-commerce pode usar Granular Caching para armazenar recomendações com segmentação por contexto, sem necessariamente cachear respostas totalmente individuais.
Configuração de chave de cache:
URL: /api/recomendacoesHeaders: User-Segment, Accept-LanguageCookie: experiment_groupTTL: 30 segundosResultado esperado:
- diferentes segmentos de usuário recebem variantes distintas da recomendação;
- versões por idioma são mantidas separadamente;
- grupos experimentais podem ser tratados sem misturar respostas;
- a carga na origem é reduzida, preservando contexto de entrega.
Esse tipo de abordagem tende a ser mais seguro e eficiente do que tentar cachear recomendações estritamente individuais por usuário.
FAQ
O que é Granular Caching?
É uma estratégia de cache que usa chaves de cache avançadas para criar variantes distintas de uma mesma URL com base em informações da requisição, como headers, cookies ou query strings.
Como o Granular Caching difere do cache básico?
No cache básico, a chave costuma depender principalmente da URL. No Granular Caching, a chave incorpora critérios adicionais para distinguir corretamente versões diferentes da resposta.
Quando devo usar Granular Caching?
Quando a mesma URL precisa responder de forma diferente por idioma, dispositivo, segmento, experimento ou outro contexto que realmente altere o conteúdo retornado.
O que são chaves de cache avançadas?
São chaves que incluem informações adicionais além da URL — como cabeçalhos, cookies ou parâmetros relevantes da query string — para representar corretamente variantes diferentes de um recurso.
Granular Caching pode causar fragmentação de cache?
Sim. Se você adicionar muitos critérios à chave, cada variante terá menos reutilização, o que reduz o cache hit ratio.
Posso usar cookies de sessão para cachear conteúdo personalizado?
Em geral, isso exige muito cuidado e nem sempre é recomendável. Sessões individuais podem gerar alta cardinalidade e maior risco de configuração incorreta. Sempre avalie se o conteúdo realmente deve passar por cache compartilhado.
Como o Granular Caching funciona com Micro Caching?
Granular Caching define como separar variantes do recurso. Micro Caching define por quanto tempo cada variante pode ser reutilizada. As duas estratégias podem ser combinadas.
Conclusão
Granular Caching resolve um desafio central de arquiteturas modernas de cache: distinguir corretamente versões diferentes do mesmo recurso sem depender apenas da URL.
Com chaves de cache avançadas, é possível segmentar conteúdo por idioma, dispositivo, região, experimento ou outros contextos relevantes. Quando aplicado com cuidado — e combinado com Micro Caching, Tiered Caching e bypass seletivo — ele ajuda a equilibrar desempenho, precisão e segurança.
Próximos passos
Conheça a solução de Cache da Azion e veja como ela implementa chaves de cache avançadas para entrega granular de conteúdo.