Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE A: todas as camadas do 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 aprimorar 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 realça 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 de 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 (nativo): o cache interno (nativo) é provisionado automaticamente em todas as camadas de serviço de gerenciamento de API (exceto na camada de Consumo). A implementação de 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 interno nas camadas v2 fornece confiabilidade aprimorada. Saiba mais sobre o cache interno.
Cache externo : para melhorar o desempenho e a persistência, opcionalmente, configure um cache externo compatível com Redis, como o Redis Gerenciado do Azure, para usar com qualquer camada de serviço ou gateway do Gerenciamento de API. Saiba mais sobre como configurar um cache externo com o Redis Gerenciado do Azure.
A tabela a seguir compara os recursos do cache interno e externo.
| Capability | Interna | External |
|---|---|---|
| Provisionamento e gerenciamento automáticos | ✔️ | ❌ |
| Custo adicionado | ❌ | ✔️ |
| Configuração personalizada | ❌ | ✔️ |
| Disponibilidade em todas as camadas e gateways | Não disponível na camada Consumo ou no gateway auto-hospedado | ✔️ |
| 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 as atualizações de serviço ocorrem. |
✔️ |
| Limites por camada | 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 ao cache semântico | ❌ | ✔️ |
| Suporte para 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 com perda de disponibilidade ou conectividade de cache |
|---|---|---|---|
| Otimizar a experiência do cliente | Acelere o processamento repetitivo de solicitações para clientes. | Interno ou externo | O back-end atende às solicitações e deve lidar com a carga total se o cache não estiver disponível. |
| Controlar custos e dimensionamento de back-end | Reduza a carga de back-end e os custos quando o back-end não for dimensionado para o tráfego completo. | External | Depende da configuração de cache e serviço. Recomendação: selecione uma camada de serviço de cache com maior confiabilidade e monitore o desempenho. |
| Repositório de metadados | Use cache-store-value para armazenar dados arbitrários no cache. | Interno ou externo | Depende da configuração de cache e serviço. |
Considerações:
Em qualquer cenário de cache, considere a possibilidade de perda de disponibilidade ou conectividade de cache. O Gerenciamento de API adota uma abordagem de "melhor esforço" para a disponibilidade em cache. Se um cache configurado não estiver disponível, ocorrerão erros 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 entre as 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 por 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 do cliente, como a perda do cache interno.
Se você configurar um cache externo, ele poderá ser persistente, mas você será 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 estiver 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 à API são armazenadas em cache e recuperadas no Gerenciamento de API do Azure.
Por padrão, em políticas de cache, o Gerenciamento de API usará um cache externo se configurado e retornará 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 pesquisa de cache na
inboundseção para verificar se há respostas armazenadas em cache e uma política de repositório de cache naoutboundseção para armazenar respostas bem-sucedidas no cache.
| Policies | Description | Usage |
|---|---|---|
| consulta de cache / armazenamento de cache | - Recuperar uma resposta do cache - Armazenar uma resposta na solicitação de cache |
– Usar para recuperar uma resposta de API completa do cache para uma solicitação idêntica GET |
| cache-lookup-value / cache-store-value | - Recuperar um valor específico do cache - Armazenar um valor específico no cache |
– Usar 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 openai do Azure - Armazenar uma resposta para uma solicitação da API openai do Azure |
– Usar para recuperar respostas semelhantes às solicitações da API de Conclusão de Chat do Azure OpenAI |
| llm-semantic-cache-lookup / llm-semantic-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 |
- Usar para recuperar respostas semelhantes a solicitações da API de Conclusão de Chat LLM |
Dica
- As políticas para armazenar entradas no cache incluem um
durationatributo para especificar por quanto tempo uma entrada armazenada em cache persiste. - Use cache-remove-value para remover um valor específico identificado por chave do cache.
Exemplos de política de cache
Veja a seguir exemplos básicos de políticas de cache no Gerenciamento de API. Para obter mais exemplos, consulte os artigos de referência de política de cache .
Cache de resposta
Armazenar a resposta completa da API no cache interno para atender a solicitações idênticas sem chamadas ao backend. 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>
Armazenamento de valores em cache
Armazenar 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 de limitação 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 o cache de 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 controles de acesso e segurança de rede adequados
- Criptografia: usar TLS/SSL para conexões com instâncias de cache externas
Conteúdo relacionado
- Saiba mais sobre políticas de cache no Gerenciamento de API
- Configurar o cache externo com o Redis Gerenciado do Azure
- Exemplos de cache personalizados com cenários avançados
- Monitorar o desempenho e as métricas de cache do Gerenciamento de API