Zasada LookupCache

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Konfiguruje sposób pobierania wartości z pamięci podręcznej w czasie działania.

Ta zasada jest przeznaczona do ogólnego, krótkotrwałego buforowania. Jest używana w połączeniu z zasadą Populate Cache (do zapisywania wpisów) i zasadą Invalidate Cache (do unieważniania wpisów).

Informacje o buforowaniu odpowiedzi z zasobów backendu znajdziesz w zasadzie Response Cache.

Dokumentacja elementów

Poniżej znajdziesz listę elementów, które możesz skonfigurować w tej zasadzie.

<LookupCache async="false" continueOnError="false" enabled="true" name="Lookup-Cache-1">
    <DisplayName>Lookup Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <CacheLookupTimeoutInSeconds/>
    <Scope>Exclusive</Scope>
    <AssignTo>flowVar</AssignTo>
</LookupCache>

Domyślnie jest uwzględniana pamięć podręczna współdzielona. Aby używać pamięci podręcznej współdzielonej, pomiń element <CacheResource> w konfiguracji tej zasady.

Więcej informacji o bazowym magazynie danych znajdziesz w artykule Wewnętrzne działanie pamięci podręcznej. Więcej informacji o konfigurowaniu pamięci podręcznych znajdziesz w artykule Tworzenie i edytowanie pamięci podręcznej środowiska.

Atrybuty elementu <LookupCache>

W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:

Atrybut Opis Domyślny Obecność
name

Wewnętrzna nazwa zasady. Wartość atrybutu name może zawierać litery, cyfry, spacje, łączniki, podkreślenia i kropki. Ta wartość nie może przekracza 255 znaków.

Opcjonalnie możesz użyć elementu <DisplayName> do oznaczenia zasady jako edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw jako false, aby w przypadku niepowodzenia zasady zwracany był błąd. To normalne w przypadku większości zasad.

Ustaw jako true, aby wykonywanie przepływu było kontynuowane nawet po zastosowaniu zasady niepowodzenie.

fałsz Opcjonalnie
enabled

Aby egzekwować zasadę, ustaw wartość true.

Aby wyłączyć zasadę, ustaw wartość false. Te zasady nie będą jest wymuszane nawet wtedy, gdy jest ono połączone z przepływem.

prawda Opcjonalnie
async

Ten atrybut został wycofany.

fałsz Wycofano

&lt;DisplayName&gt; element

Używaj oprócz atrybutu name do oznaczania zasady w edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

<DisplayName>Policy Display Name</DisplayName>
Domyślny

Nie dotyczy

Jeśli pominiesz ten element, atrybut name zasady otrzyma wartość .

Obecność Opcjonalnie
Typ Ciąg znaków

Element <AssignTo>

Określa zmienną, do której przypisywany jest wpis w pamięci podręcznej po pobraniu go z pamięci podręcznej. Zmienna musi być zapisywalna. Jeśli wyszukiwanie w pamięci podręcznej nie zwróci wartości, zmienna nie zostanie ustawiona.

<AssignTo>variable_to_receive_cached_value</AssignTo>

Domyślny:

Nie dotyczy

Obecność:

Wymagane

Typ:

Ciąg znaków

Element <CacheKey>

Konfiguruje unikalny wskaźnik do fragmentu danych przechowywanych w pamięci podręcznej.

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

Domyślny:

Nie dotyczy

Obecność:

Wymagane

Typ:

Nie dotyczy

<CacheKey> tworzy nazwę każdego fragmentu danych przechowywanego w pamięci podręcznej.

W czasie działania wartości <KeyFragment> są poprzedzane wartością elementu <Scope> lub wartością <Prefix>. Na przykład poniższy kod spowoduje utworzenie klucza pamięci podręcznej UserToken__apiAccessToken__<value_of_client_id>:

<CacheKey>
    <Prefix>UserToken</Prefix>
    <KeyFragment>apiAccessToken</KeyFragment>
    <KeyFragment ref="request.queryparam.client_id" />
</CacheKey>

Elementu <CacheKey> używasz w połączeniu z <Prefix> i <Scope>. Więcej informacji znajdziesz w artykule Praca z kluczami pamięci podręcznej.

Element <CacheLookupTimeoutInSeconds>

Określa liczbę sekund, po których nieudane wyszukiwanie w pamięci podręcznej zostanie uznane za brak w pamięci podręcznej. W takim przypadku przepływ jest wznawiany w ścieżce braku w pamięci podręcznej.

<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>

Domyślny:

30

Obecność:

Opcjonalny

Typ:

Liczba całkowita

Element <CacheResource>

Określa pamięć podręczną, w której mają być przechowywane wiadomości.

Jeśli ta zasada (i odpowiadające jej zasady PopulateCache i InvalidateCache) korzysta z dołączonej pamięci podręcznej współdzielonej, pomiń ten element.

<CacheResource>cache_to_use</CacheResource>

Domyślny:

Nie dotyczy

Obecność:

Opcjonalny

Typ:

Ciąg znaków

Więcej informacji o konfigurowaniu pamięci podręcznych znajdziesz w artykule Tworzenie i edytowanie pamięci podręcznej środowiska.

Element <CacheKey>/<KeyFragment>

Określa wartość, która ma być uwzględniona w kluczu pamięci podręcznej, tworząc przestrzeń nazw do dopasowywania żądań do odpowiedzi z pamięci podręcznej.

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

Domyślny:

Nie dotyczy

Obecność:

Opcjonalny

Typ:

Nie dotyczy

Może to być klucz (statyczna nazwa podana przez Ciebie) lub wartość (dynamiczny wpis ustawiony przez odwołanie się do zmiennej). Wszystkie określone fragmenty (plus prefiks) są łączone w celu utworzenia klucza pamięci podręcznej.

<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />

Elementu <KeyFragment> używasz w połączeniu z <Prefix> i <Scope>. Więcej informacji znajdziesz w artykule Praca z kluczami pamięci podręcznej.

Atrybuty

Atrybut Typ Domyślny Wymagane Opis
ref tekst Nie

Zmienna, z której ma zostać pobrana wartość. Nie należy używać, jeśli ten element zawiera a literal value.

Element <CacheKey>/<Prefix>

Określa wartość, która ma być używana jako prefiks klucza pamięci podręcznej.

<Prefix>prefix_string</Prefix>

Domyślny:

Nie dotyczy

Obecność:

Opcjonalny

Typ:

Ciąg znaków

Użyj tej wartości zamiast <Scope>, jeśli chcesz określić własną wartość zamiast wartości wyliczeniowej <Scope>. Jeśli jest zdefiniowany, <Prefix> poprzedza wartość klucza pamięci podręcznej w przypadku wpisów zapisywanych w pamięci podręcznej. Wartość elementu <Prefix> zastępuje wartość elementu <Scope>.

Elementu <Prefix> używasz w połączeniu z <CacheKey> i <Scope>. Więcej informacji znajdziesz w artykule Praca z kluczami pamięci podręcznej.

Element <Scope>

Wyliczenie używane do tworzenia prefiksu klucza pamięci podręcznej, gdy element <Prefix> nie jest podany w elemencie <CacheKey>.

<Scope>scope_enumeration</Scope>

Domyślny:

„Exclusive”

Obecność:

Opcjonalny

Typ:

Ciąg znaków

Ustawienie <Scope> określa klucz pamięci podręcznej, który jest poprzedzany zgodnie z wartością <Scope>. Na przykład klucz pamięci podręcznej będzie miał postać, gdy zakres jest ustawiony na Exclusive : orgName__envName__applicationName__proxy|TargetName__ [ serializedCacheKey ].

Jeśli w <CacheKey> znajduje się element <Prefix>, zastępuje on wartość elementu <Scope>. Prawidłowe wartości to wyliczenia podane poniżej.

Elementu <Scope> używasz w połączeniu z <CacheKey> i <Prefix>. Więcej informacji znajdziesz w artykule Praca z kluczami pamięci podręcznej.

Dopuszczalne wartości

Global

Klucz pamięci podręcznej jest współdzielony we wszystkich proxy interfejsu API wdrożonych w środowisku. Klucz pamięci podręcznej jest poprzedzany w postaci orgName __ envName __.

Jeśli zdefiniujesz wpis <CacheKey> z elementem <KeyFragment> apiAccessToken i zakresem <Global>, każdy wpis będzie przechowywany jako orgName__envName__apiAccessToken, a następnie serializowana wartość tokena dostępu. W przypadku proxy interfejsu API wdrożonego w środowisku o nazwie „test” w organizacji o nazwie „apifactory” tokeny dostępu będą przechowywane pod kluczem pamięci podręcznej: apifactory__test__apiAccessToken.

Application

Nazwa proxy interfejsu API jest używana jako prefiks.

Klucz pamięci podręcznej jest poprzedzany w postaci orgName__envName__applicationName.

Proxy

Konfiguracja ProxyEndpoint jest używana jako prefiks.

Klucz pamięci podręcznej jest poprzedzany w postaci orgName__envName__applicationName__proxyEndpointName .

Target

Konfiguracja TargetEndpoint jest używana jako prefiks.

Klucz pamięci podręcznej jest poprzedzany w postaci orgName__envName__applicationName__targetEndpointName .

Exclusive

Domyślny. Jest to najbardziej szczegółowy prefiks, dlatego minimalizuje ryzyko kolizji przestrzeni nazw w danej pamięci podręcznej.

Prefiks ma jedną z 2 postaci:

  • Jeśli zasada jest dołączona do przepływu ProxyEndpoint, prefiks ma postać ApiProxyName_ProxyEndpointName.
  • Jeśli zasada jest dołączona do TargetEndpoint, prefiks ma postać ApiProxyName_TargetName.

Klucz pamięci podręcznej jest poprzedzany w postaci orgName__envName__applicationName__proxyNameITargetName.

Na przykład pełny ciąg znaków może wyglądać tak:

apifactory__test__weatherapi__16__default__apiAccessToken
.

Zastosowanie

Używaj tej zasady do buforowania do zwykłych obciążeń. W czasie działania zasada LookupCache pobiera wartość z pamięci podręcznej i przypisuje ją do zmiennej określonej za pomocą elementu AssignTo (jeśli nie zostanie pobrana żadna wartość, zmienna nie zostanie ustawiona). Wartość jest wyszukiwana na podstawie klucza pamięci podręcznej utworzonego za pomocą konfiguracji, która łączy elementy CacheKey i Scope. Innymi słowy, aby pobrać konkretną wartość dodaną do pamięci podręcznej przez zasadę PopulateCache, zasada LookupCache musi mieć elementy związane z kluczem pamięci podręcznej skonfigurowane w taki sam sposób jak zasada PopulateCache.

Buforowanie ogólne za pomocą zasad Populate Cache, LookupCache i InvalidateCache korzysta z pamięci podręcznej skonfigurowanej przez Ciebie lub z pamięci podręcznej współdzielonej, która jest domyślnie dołączona. W większości przypadków bazowa pamięć podręczna współdzielona powinna spełniać Twoje potrzeby. Aby używać domyślnej pamięci podręcznej, po prostu pomiń element <CacheResource>.

Więcej informacji o konfigurowaniu pamięci podręcznych znajdziesz w artykule Tworzenie i edytowanie pamięci podręcznej środowiska. Więcej informacji o bazowym magazynie danych znajdziesz w artykule Wewnętrzne działanie pamięci podręcznej.

Zmienne przepływu

Zmienne przepływu można używać do konfigurowania dynamicznego zachowania zasad i przepływów w czasie działania na podstawie nagłówków HTTP, treści wiadomości lub kontekstu dostępnego w przepływie. Więcej informacji o zmiennych przepływu znajdziesz w artykule Dokumentacja zmiennych.

Po dostosowaniu zachowania pamięci podręcznej zdefiniowanej w zasadzie LookupCache dostępne są te predefiniowane zmienne przepływu:

Zmienne Typ Uprawnienie Opis
lookupcache.{policy-name}.cachename Ciąg znaków Tylko do odczytu Zwraca nazwę pamięci podręcznej używanej w zasadzie.
lookupcache.{policy-name}.cachekey Ciąg znaków Tylko do odczytu Zwraca używany klucz.
lookupcache.{policy-name}.cachehit Wartość logiczna Tylko do odczytu Wartość true, jeśli zasada znalazła wartość dla określonego klucza pamięci podręcznej.
lookupcache.{policy-name}.assignto Ciąg znaków Tylko do odczytu Zwraca zmienną, do której przypisana jest pamięć podręczna.

Kody błędów

W tej sekcji opisujemy komunikaty o błędach i zmienne przepływu ustawiane, gdy ta zasada wywołuje błąd. Te informacje są ważne, jeśli opracowujesz reguły błędów dla serwera proxy. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.

Prefiks kodu błędu

Nie dotyczy

Błędy w czasie wykonywania

Ta zasada nie powoduje błędów podczas działania.

Błędy wdrażania

Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.

Nazwa błędu Przyczyna Napraw
InvalidCacheResourceReference Ten błąd występuje, jeśli element <CacheResource> jest ustawiony na nazwę, która nie istnieje w środowisku, w którym wdrażany jest serwer proxy interfejsu API.
InvalidTimeout Jeśli element <CacheLookupTimeoutInSeconds> jest ustawiony na liczbę ujemną, wdrożenie serwera proxy interfejsu API się nie uda.
CacheNotFound Ten błąd występuje, jeśli pamięć podręczna wymieniona w komunikacie o błędzie nie została utworzona w konkretnym komponencie procesora wiadomości.

Zmienne błędów

Nie dotyczy

Przykładowa odpowiedź na błąd

Nie dotyczy