Obtención desde memoria caché
SE APLICA A: todos los niveles de API Management
Use la directiva cache-lookup
para realizar una consulta en la caché y devolver una respuesta en caché válida cuando esté disponible. Esta directiva se puede aplicar en aquellos casos en los que el contenido de respuesta permanezca estático durante un período de tiempo. El almacenamiento en caché de respuesta reduce el ancho de banda y los requisitos de procesamiento impuestos sobre el servidor web de back-end y disminuye la latencia percibida por los consumidores de API.
Nota
Esta directiva debe tener una directiva Store to cache (Almacenar en la caché) correspondiente.
Importante
La caché integrada es volátil y se comparte entre todas las unidades de la misma región del mismo servicio de API Management.
Nota:
Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Para que pueda configurar esta directiva, el portal proporciona un editor guiado basado en formularios. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.
Instrucción de la directiva
<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 | Descripción | Necesario | Valor predeterminado |
---|---|---|---|
allow-private-response-caching | Cuando se establece en true , permite el almacenamiento en caché de las solicitudes que contienen un encabezado de autorización. Se permiten expresiones de directiva. |
No | false |
caching-type | Elija entre los siguientes valores del atributo: - internal para usar la caché de API Management integrada,- external para usar la caché externa tal como se describe en - ,- prefer-external para usar la caché externa si está configurada o, en caso contrario, la caché interna.No se permiten expresiones de directiva. |
No | prefer-external |
downstream-caching-type | Este atributo debe establecerse en uno de los siguientes valores. - none: no se permite el almacenamiento en caché de bajada. - private: se permite el almacenamiento en caché de bajada privado. - public: se permite el almacenamiento en caché de bajada privado y compartido. Se permiten expresiones de directiva. |
No | None |
must-revalidate | Cuando el almacenamiento en caché de bajada está habilitado, este atributo activa o desactiva la directiva de control de caché must-revalidate en las respuestas de puerta de enlace. Se permiten expresiones de directiva. |
No | true |
vary-by-developer | Establezca el valor en true para almacenar en caché las respuestas por cada cuenta de desarrollador que disponga de true incluida en la solicitud. Se permiten expresiones de directiva. |
Sí | false |
vary-by-developer-groups | Se establece en true para almacenar en caché las respuestas por true . Se permiten expresiones de directiva. |
Sí | false |
Elementos
Nombre | Descripción | Obligatorio |
---|---|---|
vary-by-header | Agregue uno o varios de estos elementos para iniciar el almacenamiento en caché de las respuestas por cada valor del encabezado especificado, como Accept , Accept-Charset , Accept-Encoding , Accept-Language , Authorization , Expect , From , Host e If-Match . |
No |
vary-by-query-parameter | Agregue uno o varios de estos elementos para iniciar el almacenamiento en caché de las respuestas por cada valor de los parámetros de consulta especificados. Permite introducir uno o varios parámetros. Utilice el punto y coma como separador. | No |
Uso
- Secciones de la directiva: inbound (entrada)
- Ámbitos de la directiva: global, área de trabajo, producto, API, operación
- Puertas de enlace: clásica, v2, consumo, autohospedada y área de trabajo
Notas de uso
- API Management solo realiza la búsqueda de caché para solicitudes HTTP GET.
- Al usar
vary-by-query-parameter
, es posible que quiera declarar los parámetros de la plantilla rewrite-uri o establecer el atributocopy-unmatched-params
enfalse
. Al desactivar esta marca, se envían al back-end los parámetros que no se han declarado.
- Esta directiva solo se puede usar una vez en una sección de directiva.
Ejemplos
Ejemplo con la directiva de almacenamiento en caché correspondiente
<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>
Ejemplo de uso de expresiones de directiva
En este ejemplo se muestra cómo configurar la duración del almacenamiento en caché de respuesta de API Management para que coincida con el almacenamiento en caché de respuesta del servicio de back-end especificado por la directiva Cache-Control
del servicio de 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 obtener más información, consulte Policy expressions (Expresiones de política) y Context variable (Variable de contexto).
Directivas relacionadas
Contenido relacionado
Para más información sobre el trabajo con directivas, vea:
- Tutorial: Transformación y protección de una API
- Referencia de directivas para una lista completa de instrucciones de directivas y su configuración
- Expresiones de directiva
- Establecimiento o edición de directivas
- Reutilización de configuraciones de directivas
- Repositorio de fragmentos de código de directiva
- Creación de directivas mediante Microsoft Copilot en Azure