Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A: Todas as camadas de gerenciamento de API
Configure o cache no Gerenciamento de API do Azure para armazenar e recuperar respostas a solicitações de API e informações relacionadas. Ao armazenar respostas de serviços de back-end, o Gerenciamento de API pode atender a solicitações idênticas subsequentes diretamente do cache, reduzindo a necessidade de chamar o serviço de back-end repetidamente. O cache pode melhorar o desempenho da API, reduzir a carga de back-end e melhorar a experiência geral dos clientes que chamam APIs por meio do Gerenciamento de API.
Este artigo explica as opções de cache no Gerenciamento de API e destaca os principais cenários e considerações de configuração.
Importante
O cache requer um serviço de cache - um cache interno implantado automaticamente como parte do serviço de Gerenciamento de API ou um cache externo implantado por você - e a configuração de políticas de cache para especificar como o cache deve ser aplicado às solicitações de API.
Opções do serviço de cache
O Gerenciamento de API do Azure fornece as seguintes opções de serviço de cache para atender a diferentes requisitos de desempenho e arquitetura.
Interno (integrado): a cache interno (integrado) é provisionada automaticamente em todos os níveis de serviço de Gestão de API (exceto o nível de Consumo). A implementação do cache interno difere entre as camadas clássicas (Developer, Basic, Standard e Premium) e as camadas v2 (Basic v2, Standard v2 e Premium v2). O cache integrado nas camadas v2 oferece maior confiabilidade. Saiba mais sobre o armazenamento em cache com o cache interno.
Cache externo : para melhorar o desempenho e a persistência, configure opcionalmente um cache externo compatível com Redis, como o Azure Managed Redis, para usar com qualquer camada de serviço ou gateway de Gerenciamento de API. Saiba mais sobre como configurar um cache externo com o Azure Managed Redis.
A tabela a seguir compara os recursos do cache interno e externo.
| Capacidade | Interno | External |
|---|---|---|
| Provisionamento e gerenciamento automáticos | ✔️ | ❌ |
| Custo acrescido | ❌ | ✔️ |
| Configuração personalizada | ❌ | ✔️ |
| Disponibilidade em todas as camadas e gateways | Não disponível na camada de Consumo ou gateway auto-gerido | ✔️ |
| Armazenamento regional | Cache fornecido na mesma região que a instância de Gerenciamento de API e compartilhado entre unidades de escala. Em uma implantação de várias regiões , cada região tem seu próprio cache. |
Depende da preferência do cliente |
| Armazenamento persistente | Persistente nos níveis v2. Nas camadas clássicas (Developer, Basic, Standard e Premium), o conteúdo do cache não persiste quando ocorrem atualizações de serviço. |
✔️ |
| Limites por nível | O tamanho do cache varia de acordo com a camada de serviço | Não limitado |
| Acesso compartilhado por várias instâncias de gerenciamento de API | ❌ | ✔️ |
| Suporte a cache semântico | ❌ | ✔️ |
| Suporte a pré-carregamento e limpeza de dados | ❌ | ✔️ |
Cenários de cache
Use o cache no Gerenciamento de API do Azure para cenários como os da tabela a seguir.
| Scenario | Description | Tipo de cache | Comportamento em caso de indisponibilidade ou perda de conectividade do cache |
|---|---|---|---|
| Otimize a experiência do cliente | Acelere o processamento de solicitações repetitivas para clientes. | Interno ou externo | O back-end atende solicitações e deve lidar com a carga total se o cache não estiver disponível. |
| Gere os custos e o dimensionamento de backend | Reduza a carga e os custos do back-end quando este não estiver dimensionado para suportar o tráfego total. | External | Depende da configuração do cache e do serviço. Recomendação: Selecione uma camada de serviço de cache com a mais alta confiabilidade e monitore o desempenho. |
| Armazenamento de metadados | Use cache-store-value para armazenar dados arbitrários no cache. | Interno ou externo | Depende da configuração do cache e do serviço. |
Considerations:
Em qualquer cenário de cache, considere a possibilidade de perda de disponibilidade ou conectividade do cache. O Gerenciamento de API usa uma abordagem de "melhor esforço" para a disponibilidade do cache. Se um cache configurado não estiver disponível, ocorrerão falhas de cache e, por padrão, as solicitações continuarão para o serviço de back-end.
Nas camadas clássicas do Gerenciamento de API, o cache interno é volátil e não persiste nas atualizações de serviço. Durante uma atualização de serviço, o cache interno é limpo em um processo gradual que envolve até 50% do cache de cada vez.
Observação
Você pode definir as configurações de atualização de serviço, incluindo uma janela de manutenção para atualizações, para minimizar possíveis impactos ao cliente, como perda do cache interno.
Se você configurar um cache externo, ele pode ser persistente, mas você é responsável por garantir a disponibilidade e a conectividade.
Para proteger o serviço de back-end contra picos de tráfego que podem sobrecarregá-lo quando um cache não está disponível, configure uma política de limitação de taxa (limite de taxa ou limite de taxa por chave) imediatamente após qualquer política de pesquisa de cache.
Políticas de cache
Configure políticas de cache para controlar como as respostas da API são armazenadas em cache e recuperadas no Gerenciamento de API do Azure.
Por padrão, nas políticas de cache, o Gerenciamento de API usa um cache externo se configurado e retorna ao cache interno caso contrário.
O Gerenciamento de API fornece políticas de cache em pares, conforme mostrado na tabela a seguir. Em uma definição de política, configure uma política de consulta de cache na seção
inboundpara verificar respostas armazenadas em cache e uma política de armazenamento em cache na seçãooutboundpara armazenar respostas bem-sucedidas no cache.
| Políticas | Description | Usage |
|---|---|---|
| consulta de cache / armazenamento de cache | - Recuperar uma resposta do cache - Armazenar uma resposta na solicitação de cache |
- Use para recuperar uma resposta API completa do cache para uma solicitação idêntica GET |
| valor / valor de armazenamento de cache | - Recuperar um valor específico do cache - Armazenar um valor específico no cache |
- Uso para cenários de cache personalizados com chaves de cache específicas |
| azure-openai-semantic-cache-lookup / azure-openai-semantic-cache-store | - Verifique se existe uma resposta semanticamente semelhante no cache para uma solicitação de API do Azure OpenAI - Armazenar uma resposta para uma solicitação de API do Azure OpenAI |
- Use para recuperar respostas semelhantes a solicitações de API de conclusão de bate-papo do Azure OpenAI |
| llm-semântica-cache-lookup / llm-semântica-cache-store | - Verifique se existe uma resposta semanticamente semelhante no cache para uma solicitação de API LLM - Armazenar uma resposta para uma solicitação de API LLM |
- Uso para recuperar respostas semelhantes a solicitações de API de conclusão de bate-papo LLM |
Sugestão
- As políticas para armazenar entradas no cache incluem um
durationatributo para especificar por quanto tempo uma entrada em cache persiste. - Use cache-remove-value para remover um valor específico identificado por chave do cache.
Exemplos de política de cache
A seguir estão exemplos básicos de políticas de cache no Gerenciamento de API. Para obter mais exemplos, consulte os artigos de referência da política de cache .
Caching de resposta
Armazene em cache a resposta completa da API no cache interno para atender solicitações idênticas sem chamadas de back-end. Neste exemplo, o cache armazena respostas por sete dias.
<policies>
<inbound>
<base />
<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="none" must-revalidate="true" caching-type="internal" >
<vary-by-query-parameter>version</vary-by-query-parameter>
</cache-lookup>
</inbound>
<outbound>
<cache-store duration="604800" />
<base />
</outbound>
</policies>
Cache de valores
Armazene em cache valores de dados específicos para reutilização em várias solicitações.
<policies>
<inbound>
<cache-lookup-value key="user-preferences" default-value="none" variable-name="preferences" />
<choose>
<when condition="@(context.Variables["preferences"].ToString() == "none")">
<!-- Load preferences from backend -->
<send-request mode="new" response-variable-name="prefsResponse">
<set-url>https://backend.api/user/preferences</set-url>
</send-request>
<cache-store-value key="user-preferences" value="@(((IResponse)context.Variables["prefsResponse"]).Body.As<string>())" duration="1800" />
</when>
</choose>
</inbound>
</policies>
Proteção limitante de taxa
Como prática recomendada, combine a pesquisa de cache com a limitação de taxa para proteger os serviços de back-end.
<policies>
<inbound>
<cache-lookup-value key="@("data-" + context.Request.IpAddress)" variable-name="cachedData" />
<choose>
<when condition="@(!context.Variables.ContainsKey("cachedData"))">
<rate-limit calls="10" renewal-period="60" />
<!-- Proceed to backend -->
</when>
<otherwise>
<!-- Return cached data without rate limiting -->
<return-response>
<set-body>@((string)context.Variables["cachedData"])</set-body>
</return-response>
</otherwise>
</choose>
</inbound>
</policies>
Considerações de segurança
- Dados confidenciais: evite armazenar em cache respostas que contenham informações confidenciais ou pessoais
- Chaves de cache: certifique-se de que as chaves de cache não exponham informações confidenciais em logs ou diagnósticos
- Controle de acesso: o cache externo requer segurança de rede e controles de acesso adequados
- Criptografia: use TLS/SSL para conexões com instâncias de cache externas
Conteúdo relacionado
- Saiba mais sobre as políticas de cache no Gerenciamento de API
- Configurar o cache externo com o Azure Managed Redis
- Exemplos de cache personalizados com cenários avançados
- Monitore o desempenho do Gerenciamento de API e as métricas de cache