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

The following table describes attributes that are common to all policy parent elements:

Attribute Description Default Presence
name

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

N/A Required
continueOnError

Set to false to return an error when a policy fails. This is expected behavior for most policies.

Set to true to have flow execution continue even after a policy fails.

false Optional
enabled

Set to true to enforce the policy.

Set to false to turn off the policy. The policy will not be enforced even if it remains attached to a flow.

true Optional
async

This attribute is deprecated.

false Deprecated

<DisplayName> element

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, natural-language name.

<DisplayName>Policy Display Name</DisplayName>
Default

N/A

If you omit this element, the value of the policy's name attribute is used.

Presence Optional
Type String

&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

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP Status Occurs when
policies.populatecache.EntryCannotBeCached 500 An entry cannot be cached. The message object being cached is not an instance of a class that is Serializable.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference This error occurs if the <CacheResource> element in the PopulateCache policy is set to a name that does not exist in the environment where the API proxy is being deployed.
CacheNotFound The cache specified in the <CacheResource> element does not exist.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. populatecache.POP-CACHE-1.failed = true

Example error response

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

Example fault rule

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