Compartilhar via


Obter do cache

APLICA-SE A: todas as camadas do Gerenciamento de API

Use a política cache-lookup para realizar pesquisas e retornar uma resposta válida em cache quando disponível. Esta política deve ser aplicada em casos nos quais o conteúdo da resposta permanece estático por um período de tempo. O cache das respostas reduz os requisitos de largura de banda e processamento exigidos do servidor Web de back-end e reduz a latência percebida pelos consumidores da API.

Observação

É necessário ter uma política correspondente de Armazenar em cache.

Importante

O cache interno é volátil e compartilhado por todas as unidades na mesma região, no mesmo serviço de Gerenciamento de API.

Observação

Defina os elementos da política e os elementos filho na ordem fornecida na declaração da política. Para ajudá-lo a configurar essa política, o portal fornece um editor guiado baseado em formulário. Saiba mais sobre como definir e editar as políticas de Gerenciamento de API.

Declaração de política

<cache-lookup vary-by-developer="true | false" vary-by-developer-groups="true | false" caching-type="prefer-external | external | internal" downstream-caching-type="none | private | public" must-revalidate="true | false" allow-private-response-caching="@(expression to evaluate)">
  <vary-by-header>Accept</vary-by-header>
  <!-- should be present in most cases -->
  <vary-by-header>Accept-Charset</vary-by-header>
  <!-- should be present in most cases -->
  <vary-by-header>Authorization</vary-by-header>
  <!-- should be present when allow-private-response-caching is "true"-->
  <vary-by-header>header name</vary-by-header>
  <!-- optional, can be repeated -->
  <vary-by-query-parameter>parameter name</vary-by-query-parameter>
  <!-- optional, can be repeated -->
</cache-lookup>

Atributos

Atributo Descrição Obrigatório Padrão
allow-private-response-caching Quando definido como true, permite armazenar em cache as solicitações que contêm um cabeçalho Authorization. Expressões de política são permitidas. Não false
tipo de cache Escolha entre os seguintes valores do atributo:
- internal para usar o cache interno do Gerenciamento de API,
- external para usar o cache externo, conforme descrito em - ,
- prefer-external para usar cache externo se configurado ou cache interno.

Expressões de política não são permitidas.
Não prefer-external
downstream-caching-type Este atributo deve ser definido como um dos valores a seguir.

- none: o cache downstream não é permitido.
- private: o cache downstream privado é permitido.
- public: o cache downstream privado e compartilhado é permitido.

Expressões de política são permitidas.
Não nenhum
deve-revalidar Quando o cache downstream está habilitado, este atributo ativa ou desativa a diretiva de controle de cache must-revalidate em respostas do gateway. Expressões de política são permitidas. Não true
vary-by-developer Defina como true para armazenar em cache as respostas por conta de desenvolvedor que possui a true incluída na solicitação. Expressões de política são permitidas. Sim false
vary-by-developer-groups Defina-o como true para armazenar em cache as respostas por true. Expressões de política são permitidas. Sim false

Elementos

Nome Descrição Obrigatório
variar por cabeçalho Adicione um ou mais desses elementos para iniciar o cache de respostas por valor do cabeçalho especificado, como Accept, Accept-Charset, Accept-Encoding, Accept-Language, Authorization, Expect, From, Host, If-Match. Não
vary-by-query-parameter Adicione um ou mais desses elementos para iniciar o cache de respostas por valor de parâmetros de consulta especificados. Insira somente um ou múltiplos parâmetros. Use ponto e vírgula como um separador. Não

Uso

Observações de uso

  • O Gerenciamento de API executa a pesquisa de cache apenas para solicitações HTTP GET.
  • Ao usar o vary-by-query-parameter, o ideal é declarar os parâmetros no modelo rewrite-uri ou definir o atributo copy-unmatched-params como false. Quando esse sinalizador é desativado, os parâmetros que não são declarados são enviados ao back-end.
  • Essa política só pode ser usada uma vez em uma seção de política.
  • Essa política não tem suporte dentro de um fragmento de política.
  • Recomendamos configurar uma política de limite de taxa (ou política de limite de taxa por chave ) imediatamente após qualquer pesquisa de cache. Isso ajuda a impedir que seu serviço de back-end seja sobrecarregado se o cache não estiver disponível.

Exemplos

Exemplo com a política de armazenamento em cache correspondente

Este exemplo mostra como usar a cache-store política junto com uma cache-lookup política para armazenar respostas em cache no cache de Gerenciamento de API interno.

Observação

Adicione uma política de limite de taxa (ou política de limite de taxa por chave ) após a busca no cache para ajudar a limitar o número de chamadas e evitar sobrecarga no serviço backend caso o cache não esteja disponível.

<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>
        <rate-limit calls="10" renewal-period="60" />
    </inbound>
    <outbound>
        <cache-store duration="seconds" />
        <base />
    </outbound>
</policies>

Exemplo usando expressões de política

Este exemplo mostra como configurar a duração do cache de resposta do Gerenciamento de API que corresponde ao cache de resposta do serviço de back-end, conforme especificado pela diretiva Cache-Control do serviço de backup.

<!-- The following cache policy snippets demonstrate how to control API Management response cache duration with Cache-Control headers sent by the backend service. -->

<!-- Copy this snippet into the inbound section -->
<cache-lookup vary-by-developer="false" vary-by-developer-groups="false" downstream-caching-type="public" must-revalidate="true" >
  <vary-by-header>Accept</vary-by-header>
  <vary-by-header>Accept-Charset</vary-by-header>
</cache-lookup>
 <rate-limit calls="10" renewal-period="60" />

<!-- Copy this snippet into the outbound section. Note that cache duration is set to the max-age value provided in the Cache-Control header received from the backend service or to the default value of 5 min if none is found  -->
<cache-store duration="@{
    var header = context.Response.Headers.GetValueOrDefault("Cache-Control","");        
    var maxAge = Regex.Match(header, "@(max-age=(?<maxAge>\\d+))").Groups["maxAge"]?.Value;
    return (!string.IsNullOrEmpty(maxAge))?int.Parse(maxAge):300; }" />

Para obter mais informações, veja Expressões de política e Variável de contexto.

Para obter mais informações sobre como trabalhar com políticas, consulte: