Uzupełnij zasadę cacheCache

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Określa sposób zapisywania wartości w 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żywane w połączeniu z funkcją Wyszukaj zasady dotyczące pamięci podręcznej (do odczytu wpisów w pamięci podręcznej) oraz Unieważnij zasadę dotyczącą pamięci podręcznej (do unieważniania wpisów).

Informacje o buforowaniu odpowiedzi zasobów backendu znajdziesz w dokumentacji Zasada pamięci podręcznej odpowiedzi.

Odwołanie do elementu

Poniżej znajduje się lista elementów, które można 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>

&lt;PopulateCache&gt; atrybuty

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

&lt;CacheKey&gt; element

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

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

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

Domyślne:

Nie dotyczy

Obecność:

Wymagane

Typ:

Nie dotyczy

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

W czasie działania wartości <KeyFragment> są dodawane prefiksem Wartość elementu <Scope> lub <Prefix>. Na przykład parametr daje w rezultacie klucz pamięci podręcznej równy UserToken__apiAccessToken__&lt;value_of_client_id&gt;:

<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 na temat pracy z kluczami pamięci podręcznej.

&lt;CacheResource&gt; element

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

Pomiń ten element, jeśli ta zasada (oraz odpowiednie elementy lookupCache i zasady VerifyateCache) korzystają z dołączonej współdzielonej pamięci podręcznej.

<CacheResource>cache_to_use</CacheResource>

Domyślne:

Nie dotyczy

Obecność:

Opcjonalnie

Typ:

Ciąg znaków

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

&lt;CacheKey&gt;/&lt;KeyFragment&gt; element

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

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

Domyślne:

Nie dotyczy

Obecność:

Opcjonalnie

Typ:

Nie dotyczy

Może to być klucz (podana przez Ciebie statyczna nazwa) lub wartość (wpis dynamiczny ustawiony przez odwołania do zmiennej). Wszystkie określone fragmenty łącznie (plus prefiks) są połączone z utwórz klucz 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 na temat pracy z kluczami pamięci podręcznej.

Atrybuty

Atrybut Typ Domyślny Wymagane Opis
odsyłacz ciąg znaków Nie

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

&lt;CacheKey&gt;/&lt;Prefix&gt; element

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

<Prefix>prefix_string</Prefix>

Domyślne:

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 wyliczanej <Scope>. Jeśli zostanie określona, <Prefix> dodaje na początku wartość klucza pamięci podręcznej dla wpisów zapisanych w pamięci podręcznej. O Wartość elementu <Prefix> zastępuje element <Scope> .

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

&lt;ExpirySettings&gt; element

Określa, kiedy wpis w pamięci podręcznej powinien wygasnąć. Kiedy obecny, <TimeoutInSeconds> zastąpienie <TimeOfDay> 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ślne:

Nie dotyczy

Obecność:

Wymagane

Typ:

Nie dotyczy

Elementy podrzędne elementu <ExpirySettings>

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

Element podrzędny Opis
<TimeoutInSeconds>

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

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

Ten element zastępuje wycofany element TimeoutInSec.

<ExpiryDate>

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

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

Jeśli podana data przypada w przeszłości, zasada będzie stosować maksymalny czas życia 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 tracić ważność. Podaj ciąg w formie HH:mm:ss, gdzie HH odpowiada 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>

Należy podać tylko jeden z możliwych elementów podrzędnych. Jeśli podasz wiele elementów, kolejność obowiązywania zasad to:TimeoutInSeconds, ExpiryDate, TimeOfDay

W przypadku każdego z powyższych elementów podrzędnych klasy <ExpirySettings> Jeśli określisz opcjonalny atrybut ref w elemencie podrzędnym, zasada pobierze wartość wygaśnięcia ważności z nazwanej zmiennej kontekstowej. Jeśli zmienna nie jest zdefiniowana, zasada używa wartości tekstowej elementu podrzędnego.

&lt;Scope&gt; element

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

<Scope>scope_enumeration</Scope>

Domyślne:

„Ekskluzywna”

Obecność:

Opcjonalnie

Typ:

Ciąg znaków

Ustawienie <Scope> określa klucz pamięci podręcznej, który jest dodawany zgodnie z wartość <Scope>. Na przykład klucz pamięci podręcznej może mieć następującą postać, gdy: zakres jest ustawiony na Exclusive:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]

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

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

Dopuszczalne wartości

Global

Klucz pamięci podręcznej jest wspólny dla wszystkich serwerów proxy interfejsów API wdrożonych w środowisku. Klucz pamięci podręcznej to zostanie dołączony do postaci orgName __ envName __.

Jeśli zdefiniujesz wpis <CacheKey> z parametrem <KeyFragment> apiAccessToken i zakres <Global>, każdy wpis jest przechowywany jako orgName__envName__apiAccessToken, po nim następuje operator zserializowanej wartości tokena dostępu. Dla serwera proxy interfejsu API wdrożonego w środowisku o nazwie „test” w organizacji o nazwie „apifactory” tokeny dostępu były przechowywane w kolekcji ten klucz pamięci podręcznej: apifactory__test__apiAccessToken.

Application

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

Klucz pamięci podręcznej ma postać orgName__envName__apiProxyName.

Proxy

Jako prefiks jest używana konfiguracja ProxyEndpoint.

Klucz pamięci podręcznej jest dodawany do formularza orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName

Target

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

Klucz pamięci podręcznej dodany na początku formularza orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName

Exclusive

Domyślny: Jest to najbardziej szczegółowe rozwiązanie, więc wiąże się z minimalnym ryzykiem związanym z przestrzenią nazw i konfliktach w danej pamięci podręcznej.

Prefiks może mieć jedną z dwóch form:

  • Jeśli zasada jest dołączona do procesu ProxyEndpoint, prefiksem jest format ApiProxyName_ProxyEndpointName.
  • Jeśli zasada jest dołączona w sekcji TargetEndpoint, prefiksem jest formularz ApiProxyName_TargetName.

Klucz pamięci podręcznej dodany na początku formularza orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName

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

apifactory__test__weatherapi__16__default__apiAccessToken
.

&lt;Source&gt; element

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

<Source>source_variable</Source>

Domyślne:

Nie dotyczy

Obecność:

Wymagane

Typ:

Ciąg znaków

Zastosowanie

Ta zasada służy do ogólnego buforowania. W czasie działania Zasada <PopulateCache> zapisuje dane ze zmiennej podanej w parametrze <Source> do pamięci podręcznej wskazanej w polu <CacheResource>. Za pomocą <CacheKey>, <Scope> i <Prefix>, aby określić klucz, który może za pomocą zasady <LookupCache> pobrać wartość. Użyj <ExpirySettings> – do skonfigurowania, kiedy wartość w pamięci podręcznej powinna wygasnąć.

Buforowanie ogólnego przeznaczenia z użyciem zasad PopulationCache, zasad lookupCache i zasad usługiInvalidateCache. albo ze skonfigurowanej pamięci podręcznej, albo ze współdzielonej pamięci podręcznej, która jest dostępna domyślnie. W większości przypadków bazowa współdzielona pamięć podręczna powinna Ci odpowiadać. Aby użyć tej pamięci podręcznej, po prostu pomiń <CacheResource> element.

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

Więcej informacji o bazowym magazynie danych znajdziesz w artykule Wewnętrzne pamięci podręcznej. Więcej informacji o konfigurowaniu pamięci podręcznej można znaleźć w sekcji Tworzenie i edytowanie pamięci podręcznej środowiska.

Informacje o szyfrowaniu pamięci podręcznej

Edge for Public Cloud: pamięć podręczna jest szyfrowana tylko w PCI – i zgodne z HIPAA organizacji non-profit. Szyfrowanie w tych organizacjach jest skonfigurowane podczas organizacji. i udostępnianie danych.

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>