Udostępnij za pośrednictwem


Pobieranie z pamięci podręcznej

DOTYCZY: Wszystkie warstwy usługi API Management

Użyj zasad, cache-lookup aby wykonać wyszukiwanie w pamięci podręcznej i zwrócić prawidłową odpowiedź z pamięci podręcznej, jeśli jest dostępna. Te zasady można stosować w przypadkach, gdy zawartość odpowiedzi pozostaje statyczna przez pewien czas. Buforowanie odpowiedzi zmniejsza wymagania dotyczące przepustowości i przetwarzania na serwerze internetowym zaplecza oraz zmniejsza opóźnienia dla użytkowników interfejsu API.

Uwaga

Te zasady muszą mieć odpowiednie zasady Magazynu do pamięci podręcznej .

Ważne

Wbudowana pamięć podręczna jest niestabilna i współużytkowana przez wszystkie jednostki w tym samym regionie w tej samej usłudze API Management.

Uwaga

Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Aby ułatwić konfigurowanie tych zasad, portal udostępnia edytor oparty na formularzach z przewodnikiem. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.

Instrukcja zasad

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

Atrybuty

Atrybut opis Wymagani Wartość domyślna
buforowanie allow-private-response-cach Gdy jest ustawiona wartość true, umożliwia buforowanie żądań zawierających nagłówek autoryzacji. Wyrażenia zasad są dozwolone. Nie. false
Typ buforowania Wybierz między następującymi wartościami atrybutu:
- internaldo korzystania z wbudowanej pamięci podręcznej usługi API Management,
- external aby używać zewnętrznej pamięci podręcznej zgodnie z opisem w temacie Używanie zewnętrznej pamięci podręcznej Azure Cache for Redis w usłudze Azure API Management,
- prefer-external do korzystania z zewnętrznej pamięci podręcznej, jeśli skonfigurowano lub wewnętrzną pamięć podręczną.

Wyrażenia zasad nie są dozwolone.
Nie. prefer-external
typ buforowania podrzędnego Ten atrybut musi być ustawiony na jedną z następujących wartości.

- brak — buforowanie podrzędne jest niedozwolone.
- prywatne - podrzędne prywatne buforowanie jest dozwolone.
- publiczne - prywatne i współużytkowane podrzędne buforowanie jest dozwolone.

Wyrażenia zasad są dozwolone.
Nie. Brak
must-revalidate Gdy buforowanie podrzędne jest włączone, ten atrybut włącza lub wyłącza dyrektywę must-revalidate kontroli pamięci podręcznej w odpowiedziach bramy. Wyrażenia zasad są dozwolone. Nie. true
vary-by-developer Ustaw wartość na wartość , aby true buforować odpowiedzi na konto dewelopera, które jest właścicielem klucza subskrypcji zawartego w żądaniu. Wyrażenia zasad są dozwolone. Tak false
vary-by-developer-groups Ustaw wartość na wartość , aby true buforować odpowiedzi na grupę użytkowników. Wyrażenia zasad są dozwolone. Tak false

Elementy

Nazwa/nazwisko opis Wymagania
vary-by-header Dodaj co najmniej jeden z tych elementów, aby rozpocząć buforowanie odpowiedzi na określoną wartość określonego nagłówka, na przykład Accept, Accept-Charset, Accept-LanguageExpectAuthorizationFromAccept-Encoding, . HostIf-Match Nie.
vary-by-query-parameter Dodaj co najmniej jeden z tych elementów, aby rozpocząć buforowanie odpowiedzi na wartość określonych parametrów zapytania. Wprowadź jeden lub wiele parametrów. Użyj średnika jako separatora. Nie.

Użycie

  • Sekcje zasad: ruch przychodzący
  • Zakresy zasad: globalny, obszar roboczy, produkt, interfejs API, operacja
  • Bramy: klasyczne, v2, zużycie, self-hosted, obszar roboczy

Uwagi dotyczące użycia

  • Usługa API Management wykonuje tylko wyszukiwanie pamięci podręcznej dla żądań HTTP GET.
  • W przypadku używania vary-by-query-parameterpolecenia możesz zadeklarować parametry w szablonie rewrite-uri lub ustawić atrybut copy-unmatched-params na false. Dezaktywując tę flagę, parametry, które nie są zadeklarowane, są wysyłane do zaplecza.
  • Te zasady można użyć tylko raz w sekcji zasad.

Przykłady

Przykład z odpowiednimi zasadami magazynu pamięci podręcznej

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

Przykład użycia wyrażeń zasad

W tym przykładzie pokazano, jak skonfigurować czas buforowania odpowiedzi usługi API Management zgodny z buforowaniem odpowiedzi usługi zaplecza określonym w dyrektywie usługi zaplecza Cache-Control .

<!-- 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;
  }"
 />

Aby uzyskać więcej informacji, zobacz Wyrażenia zasad i Zmienna kontekstowa.

Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz: