Uzupełnij zasadę cacheCache

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

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

Zasada Wypełnij pamięć podręczną służy do zapisywania wpisów w krótkoterminowej pamięci podręcznej ogólnego przeznaczenia. Jest używana w połączeniu z zasadą Sprawdź pamięć podręczną (do odczytu wpisów w pamięci podręcznej) i zasadą unieważniania pamięci podręcznej (do unieważniania wpisów).

Informacje o buforowaniu odpowiedzi zasobów backendu znajdziesz w opisie zasady buforowania odpowiedzi.

Odwołanie do elementu

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

Tabela poniżej zawiera opis atrybutów wspólnych dla wszystkich elementów nadrzędnych zasad:

Atrybut Opis Domyślne 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>, aby oznaczyć zasadę w edytorze serwera proxy interfejsu zarządzania inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw wartość false, aby zwracać błąd w przypadku niepowodzenia zasady. Jest to normalne działanie większości zasad.

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

false Opcjonalnie
enabled

Ustaw jako true, aby wymuszać zasadę.

Ustaw wartość false, aby wyłączyć tę zasadę. Zasada nie będzie egzekwowana, nawet jeśli pozostanie dołączona do procesu.

prawda Opcjonalnie
async

Ten atrybut został wycofany.

false Wycofano

Element <DisplayName>

Użyj oprócz atrybutu name, aby oznaczyć zasadę w edytorze serwera proxy interfejsu zarządzania inną nazwą w języku naturalnym.

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

Nie dotyczy

Jeśli pominiesz ten element, zostanie użyta wartość atrybutu name zasady.

Obecność Opcjonalnie
Typ Ciąg znaków

Element <CacheKey>

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

Rozmiar klucza pamięci podręcznej nie może przekraczać 2 KB.

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

Domyślnie:

Nie dotyczy

Obecność:

Wymagane

Typ:

Nie dotyczy

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

W czasie działania wartości <KeyFragment> są dołączane na początku wartości elementu <Scope> lub <Prefix>. Na przykład w poniższym przykładzie powstaje klucz 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 elementami <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.

Pomiń ten element, jeśli ta zasada (oraz odpowiednie zasady LookupCache i InvalidateCache) używa dołączonej współdzielonej pamięci podręcznej.

<CacheResource>cache_to_use</CacheResource>

Domyślnie:

Nie dotyczy

Obecność:

Opcjonalnie

Typ:

Ciąg znaków

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

Element <CacheKey>/<KeyFragment>

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

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

Domyślnie:

Nie dotyczy

Obecność:

Opcjonalnie

Typ:

Nie dotyczy

Może to być klucz (wpisana przez Ciebie statyczna nazwa) lub wartość (dynamiczny wpis ustawiony przez odwoływanie się do zmiennej). Wszystkie określone fragmenty (plus prefiks) są połączone, aby utworzyć klucz pamięci podręcznej.

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

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

Atrybuty

Atrybut Typ Domyślne Wymagane Opis
referencja ciąg znaków Nie

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

Element <CacheKey>/<Prefiks>

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

<Prefix>prefix_string</Prefix>

Domyślnie:

Nie dotyczy

Obecność:

Opcjonalnie

Typ:

Ciąg znaków

Użyj tej wartości zamiast <Scope>, jeśli chcesz określić własną wartość zamiast wartości określonej przez <Scope>. Jeśli został określony, <Prefix> dołącza na początku wartość klucza pamięci podręcznej do wpisów zapisanych w pamięci podręcznej. Wartość elementu <Prefix> zastępuje wartość elementu <Scope>.

Elementu <Prefix> używasz w połączeniu z elementami <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 powinien wygasnąć. Gdy występuje, atrybut <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ślnie:

Nie dotyczy

Obecność:

Wymagane

Typ:

Nie dotyczy

Elementy podrzędne elementu <ExpirySettings>

Używaj dokładnie 1 elementu podrzędnego. Ta tabela zawiera opis elementów podrzędnych obiektu <ExpirySettings>:

Element podrzędny Opis
<TimeoutInSeconds>

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

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

Ten element zastępuje teraz wycofany element TimeoutInSec.

<ExpiryDate>

Określa datę wygaśnięcia wpisu w pamięci podręcznej. Podaj ciąg znaków w formacie mm-dd-yyyy.

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

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

<TimeOfDay>

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

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

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

Jeśli w przypadku każdego z wymienionych powyżej elementów podrzędnych obiektu <ExpirySettings> określisz opcjonalny atrybut ref, zasada pobierze wartość wygaśnięcia z nazwanej zmiennej kontekstowej. Jeśli zmienna nie jest zdefiniowana, zasada używa literału wartości tekstowej elementu podrzędnego.

Element <Scope>

Wyliczenie używane do utworzenia prefiksu klucza pamięci podręcznej, gdy element <Prefix> nie zawiera elementu <CacheKey>.

<Scope>scope_enumeration</Scope>

Domyślnie:

„Wyjątkowa”

Obecność:

Opcjonalnie

Typ:

Ciąg znaków

Ustawienie <Scope> określa klucz pamięci podręcznej dołączany na początku zgodnie z wartością <Scope>. Gdy zakres jest ustawiony na Exclusive, klucz pamięci podręcznej miałby na przykład taką postać:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ ]

Jeśli w elemencie <CacheKey> występuje element <Prefix>, zastępuje on wartość elementu <Scope>. Prawidłowe wartości obejmują wyliczenia poniżej.

Elementu <Scope> używasz w połączeniu z elementami <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ółużytkowany przez wszystkie serwery proxy interfejsów API wdrożone w środowisku. Klucz pamięci podręcznej jest dodawany na początku w formacie orgName __ orgName __.

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

Application

Jako prefiks używana jest nazwa serwera proxy interfejsu API.

Klucz pamięci podręcznej jest na początku w postaci orgName__envName__apiProxyName.

Proxy

Jako prefiks jest używana konfiguracja ProxyEndpoint.

Klucz pamięci podręcznej jest dołączany w postaci orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName .

Target

Jako prefiks jest używana konfiguracja docelowego punktu końcowego.

Klucz pamięci podręcznej w postaci orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName .

Exclusive

Domyślny: Jest to najbardziej szczegółowy i wiążą się z nim minimalne ryzyko kolizji przestrzeni nazw w danej pamięci podręcznej.

Prefiks występuje w jednej z dwóch postaci:

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

Klucz pamięci podręcznej w postaci orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

Pełny ciąg może wyglądać np. tak:

apifactory__test__weatherapi__16__default__apiAccessToken
.

Element <Source>

Określa zmienną, której wartość należy zapisać w pamięci podręcznej.

<Source>source_variable</Source>

Domyślnie:

Nie dotyczy

Obecność:

Wymagane

Typ:

Ciąg znaków

Zastosowanie

Ta zasada służy 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 podanej w elemencie <CacheResource>. Za pomocą elementów <CacheKey>, <Scope> i <Prefix> możesz określić klucz, którego możesz użyć do pobierania wartości z zasady <LookupCache>. Aby określić, kiedy wartość w pamięci podręcznej powinna wygasnąć, użyj elementu <ExpirySettings>.

Buforowanie do ogólnego przeznaczenia z zasadami PopulationCache, zasadą LookupCache i InvalidateCache korzysta ze skonfigurowanej przez Ciebie pamięci podręcznej lub współdzielonej pamięci podręcznej, która jest uwzględniana domyślnie. W większości przypadków bazowa współdzielona pamięć podręczna powinna spełniać Twoje potrzeby. Aby użyć tej pamięci podręcznej, 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 oraz czas wygaśnięcia.

Więcej informacji o bazowym magazynie danych znajdziesz w artykule o procesie wewnętrznym buforowania. Więcej informacji o konfigurowaniu pamięci podręcznych znajdziesz w artykule Tworzenie i edytowanie pamięci podręcznej środowiska.

Informacje o szyfrowaniu pamięci podręcznej

Brzegowy dla chmury publicznej: pamięć podręczna jest szyfrowana tylko w organizacjach korzystających z PCI i HIPAA. Szyfrowanie w tych organizacjach jest konfigurowane podczas obsługi administracyjnej organizacji.

Kody błędów

W tej sekcji opisujemy kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wywołuje błąd. Te informacje są ważne, jeśli opracowujesz reguły dotyczące błędów do obsługi takich błędów. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.

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 te zasady.

Nazwa błędu Przyczyna Napraw
InvalidCacheResourceReference Ten błąd występuje, jeśli element <CacheResource> w zasadzie PopulateCache jest ustawiony na nazwę, 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 zasada wywołuje błąd. Więcej informacji znajdziesz w artykule Co musisz wiedzieć 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 środowiska wykonawczego powyżej. Nazwa błędu to ostatnia część kodu. 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>