Obter a partir da cache

APLICA-SE A: Todas as camadas de gerenciamento de API

Use a política para executar a cache-lookup pesquisa de cache e retornar uma resposta válida em cache quando disponível. Esta política pode ser aplicada nos casos em que o conteúdo de resposta permanece estático durante um período de tempo. A colocação em cache de respostas reduz a largura de banda e os requisitos de processamento impostos no servidor Web de back-end e reduz a latência obtida pelos consumidores da API.

Nota

Esta política deve ter uma política de armazenamento para cache correspondente.

Importante

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

Nota

Defina os elementos da política e os elementos filho na ordem fornecida na declaração de política. Para ajudá-lo a configurar essa política, o portal fornece um editor guiado baseado em formulários. Saiba mais sobre como definir ou editar 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 Description Necessário Predefinição
allow-private-response-caching Quando definido como true, permite o armazenamento em cache de solicitações que contêm um cabeçalho de Autorização. São permitidas expressões de política. Não false
tipo de cache Escolha entre os seguintes valores do atributo:
- internalpara usar o cache interno de Gerenciamento de API,
- external para usar o cache externo conforme descrito em Usar um Cache Redis do Azure externo no Gerenciamento de API do Azure,
- prefer-external para usar o cache externo, se configurado, ou o cache interno de outra forma.

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

- Nenhum - o armazenamento em cache a jusante não é permitido.
- privado - é permitido o armazenamento em cache privado a jusante.
- público - privado e compartilhado downstream caching é permitido.

São permitidas expressões de política.
Não nenhum
deve-revalidar Quando o cache downstream está habilitado, esse atributo ativa ou desativa a diretiva de controle de cache nas respostas do must-revalidate gateway. São permitidas expressões de política. Não true
variar por desenvolvedor Defina como true respostas em cache por conta de desenvolvedor que possui a chave de assinatura incluída na solicitação. São permitidas expressões de política. Sim false
variar por grupos de desenvolvedores Defina como true respostas de cache por grupo de usuários. São permitidas expressões de política. Sim false

Elementos

Nome Descrição Obrigatório
variar por cabeçalho Adicione um ou mais desses elementos para começar a armazenar em cache respostas por valor de cabeçalho especificado, como Accept, Accept-Charset, , Accept-Encoding, Accept-Language, ExpectAuthorization, From, Host, . If-Match Não
variar-por-query-parameter Adicione um ou mais desses elementos para começar a armazenar em cache respostas por valor de parâmetros de consulta especificados. Insira um ou vários parâmetros. Use ponto-e-vírgula como separador. Não

Utilização

Notas de utilização

  • O Gerenciamento de API só executa a pesquisa de cache para solicitações HTTP GET.
  • Ao usar vary-by-query-parametero , convém declarar os parâmetros no modelo rewrite-uri ou definir o atributo copy-unmatched-params como false. Ao desativar esse sinalizador, os parâmetros que não são declarados são enviados para o back-end.
  • Esta política só pode ser utilizada uma vez numa secção de política.

Exemplos

Exemplo com a política de armazenamento de cache correspondente

<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="seconds" />
        <base />
    </outbound>
</policies>

Exemplo de utilização de 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 do serviço de Cache-Control back-end.

<!-- 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>

<!-- 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, consulte Expressões de política e variável de contexto.

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