Uzupełnij zasadę cacheCache

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

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

Zasada Populate Cache (Wypełnij pamięć podręczną) służy do zapisywania wpisów w krótkoterminowej pamięci podręcznej do zwykłych obciążeń. Jest ona używana w połączeniu z zasadą Lookup Cache (do odczytywania wpisów w pamięci podręcznej) i zasadą Invalidate Cache (do unieważniania wpisów).

Aby zapisać w pamięci podręcznej odpowiedzi z zasobów backendu, zapoznaj się z zasadą Response Cache (Pamięć podręczna odpowiedzi).

Dokumentacja elementów

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

<PopulateCache async="false" continueOnError="false" enabled="true" name="Populate-Cache-1">
    <DisplayName>Populate Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <TimeoutInSeconds>300</TimeoutInSeconds>
    </ExpirySettings>
    <Source>flowVar</Source>
</PopulateCache>

Atrybuty <PopulateCache>

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

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

Klucze pamięci podręcznej mogą mieć maksymalnie 2 KB.

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

Domyślna wartość:

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 <Prefix> wartości. 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 <CacheResource>

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

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

<CacheResource>cache_to_use</CacheResource>

Domyślna wartość:

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ślna wartość:

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ślna wartość:

Nie dotyczy

Obecność:

Opcjonalny

Typ:

Ciąg znaków

Użyj tej wartości zamiast <Scope>, gdy 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 <ExpirySettings>

Określa, kiedy wpis w pamięci podręcznej ma wygasnąć. Jeśli jest obecny, <TimeoutInSeconds> zastępuje zarówno <TimeOfDay>, jak i <ExpiryDate>.

<ExpirySettings>
  <!-- use exactly one of the following child elements -->
  <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
  <ExpiryDate ref="date_variable">expiration_date</ExpiryDate>
  <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
</ExpirySettings>

Domyślna wartość:

Nie dotyczy

Obecność:

Wymagane

Typ:

Nie dotyczy

Elementy podrzędne elementu <ExpirySettings>

Użyj dokładnie 1 elementu podrzędnego. W tabeli poniżej znajdziesz opis elementów podrzędnych elementu <ExpirySettings>:

Element podrzędny Opis
<TimeoutInSeconds>

Liczba sekund, po których wpis w pamięci podręcznej ma wygasnąć.

<ExpirySettings>
  <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds>
</ExpirySettings>

Ten element zastępuje element TimeoutInSec, który jest obecnie wycofywany.

<ExpiryDate>

Określa datę, po której wpis w pamięci podręcznej ma wygasnąć. Podaj ciąg znaków w formacie mm-dd-yyyy.

<ExpirySettings>
  <ExpiryDate ref="var-containing-date">expiry</ExpiryDate>
</ExpirySettings>

Jeśli podana data jest w przeszłości, zasada zastosuje maksymalny czas życia do wpisu w pamięci podręcznej. Maksymalny czas to 30 dni.

<TimeOfDay>

Określa godzinę, po której wpis w pamięci podręcznej ma wygasnąć. Podaj ciąg znaków w formacie HH:mm:ss, gdzie GG oznacza godzinę w 24-godzinnym formacie czasu UTC. Na przykład 14:30:00 oznacza 14:30.

<ExpirySettings>
  <TimeOfDay ref="var-containing-time">expiry</TimeOfDay>
</ExpirySettings>

Należy określić tylko 1 z możliwych elementów podrzędnych. Jeśli określisz kilka elementów, kolejność pierwszeństwa będzie następująca:TimeoutInSeconds, ExpiryDate, TimeOfDay.

W przypadku każdego z powyższych elementów podrzędnych elementu <ExpirySettings>, możesz określić opcjonalny atrybut ref. W takim przypadku zasada pobierze wartość wygaśnięcia z nazwanej zmiennej kontekstu. Jeśli zmienna nie jest zdefiniowana, zasada używa wartości literału elementu podrzędnego.

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ślna wartość:

„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ł następującą postać, gdy zakres jest ustawiony na Exclusive:

orgName__envName__apiProxyName__deployedRevisionNumber__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 przez wszystkie serwery proxy API wdrożone w środowisku. Klucz pamięci podręcznej jest poprzedzany w formacie 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 formacie orgName__envName__apiProxyName.

Proxy

Konfiguracja ProxyEndpoint jest używana jako prefiks.

Klucz pamięci podręcznej jest poprzedzany w formacie orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName .

Target

Konfiguracja TargetEndpoint jest używana jako prefiks.

Klucz pamięci podręcznej jest poprzedzany w formacie orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName .

Exclusive

Domyślny. Jest to najbardziej szczegółowy zakres, 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 formacie orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

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

apifactory__test__weatherapi__16__default__apiAccessToken
.

Element <Source>

Określa zmienną, której wartość ma zostać zapisana w pamięci podręcznej.

<Source>source_variable</Source>

Domyślna wartość:

Nie dotyczy

Obecność:

Wymagane

Typ:

Ciąg znaków

Zastosowanie

Użyj tej zasady do buforowania ogólnego przeznaczenia. W czasie działania zasada <PopulateCache> zapisuje dane ze zmiennej określonej w elemencie <Source> w pamięci podręcznej określonej w elemencie <CacheResource>. Za pomocą elementów <CacheKey>, <Scope>, i <Prefix> możesz określić klucz, którego możesz użyć w zasadzie <LookupCache> do pobrania wartości. Za pomocą elementu <ExpirySettings> możesz skonfigurować, kiedy wartość w pamięci podręcznej ma wygasnąć.

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

Limity pamięci podręcznej: obowiązują różne limity pamięci podręcznej takie jak rozmiar nazwy i wartości, łączna liczba pamięci podręcznych, liczba elementów w pamięci podręcznej, i wygaśnięcie.

Więcej informacji o podstawowym 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.

Szyfrowanie pamięci podręcznej

Edge for Public Cloud: pamięć podręczna jest szyfrowana tylko w organizacjach, w których włączono zgodność z PCI- i HIPAA. Szyfrowanie w tych organizacjach jest konfigurowane podczas tworzenia organizacji organizacji.

Kody błędów

W tej sekcji opisano kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wyzwala błąd. Warto o tym wiedzieć, jeśli rozwijasz reguły błędów, aby obsługi błędów. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z zasadami i postępowaniu z błędami

Błędy w czasie wykonywania

Te błędy mogą wystąpić podczas wykonywania zasady.

Kod błędu Stan HTTP Występuje, gdy
policies.populatecache.EntryCannotBeCached 500 Wpisu nie można zapisać w pamięci podręcznej. Obiekt wiadomości zapisywany w pamięci podręcznej nie jest instancją klasy, którą można serializować.

Błędy wdrażania

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

Nazwa błędu Przyczyna Napraw
InvalidCacheResourceReference Ten błąd występuje, jeśli element <CacheResource> w zasadzie PopulationCache ma wartość nazwa, która nie istnieje w środowisku, w którym wdrażany jest serwer proxy interfejsu API.
CacheNotFound Pamięć podręczna określona w elemencie <CacheResource> nie istnieje.

Zmienne błędów

Te zmienne są ustawiane, gdy ta zasada wywołuje błąd. Więcej informacji znajdziesz w artykule Podstawowe informacje o błędach związanych z naruszeniem zasad.

Zmienne Gdzie Przykład
fault.name="fault_name" fault_name to nazwa błędu podana w tabeli Błędy czasu działania powyżej. Nazwa błędu to ostatnia część kodu błędu. fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. populatecache.POP-CACHE-1.failed = true

Przykładowa odpowiedź na błąd

{
  "fault": {
    "faultstring": "[entry] can not be cached. Only serializable entries are cached.",
    "detail": {
      "errorcode": "steps.populatecache.EntryCannotBeCached"
    }
  }
}

Przykładowa reguła błędu

<FaultRule name="Populate Cache Fault">
    <Step>
        <Name>AM-EntryCannotBeCached</Name>
        <Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
    </Step>
    <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule>