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 Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> 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 |
|---|---|
| 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 |
<ExpiryDate> |
Określa datę, po której wpis w pamięci podręcznej ma wygasnąć. Podaj ciąg znaków w formacie
<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 <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 |
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:
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. |
build |
CacheNotFound |
Pamięć podręczna określona w elemencie <CacheResource> nie
istnieje. |
build |
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>