Compartilhar via


Visão geral do cache

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 inbound seção para verificar se há respostas armazenadas em cache e uma política de repositório de cache na outbound seçã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 duration atributo 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