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
caching-type 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
must-revalidate 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. No 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
vary-by-header 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.

Exemplos

Exemplo com a política de armazenamento em 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 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>

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