Praca z kluczami pamięci podręcznej

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

Korzystając z zasad pamięci podręcznej, możesz zapewnić unikalność kluczy wartości w pamięci podręcznej, konfigurując klucze pamięci podręcznej. Klucz pamięci podręcznej wraz z innymi wartościami, które możesz skonfigurować, zapewnia niezawodny sposób na uzyskanie tych samych danych, które zostały umieszczone w pamięci podręcznej. Klucze pamięci podręcznej są używane w zasadach PopulateCache, LookupCache, InvalidateCache i Response Cache policy.

Wartości elementów konfiguracji – <CacheKey>/<KeyFragment>, <Scope> i <Prefix> – są łączone w celu utworzenia identyfikatora powiązanego z wartością umieszczoną w pamięci podręcznej. Do pobrania wartości używasz tej samej konfiguracji.

Klucz pamięci podręcznej możesz utworzyć za pomocą tych elementów konfiguracji zasad pamięci podręcznej:

Element konfiguracji pamięci podręcznej Opis
<CacheKey> / <KeyFragment> Użyj połączonych elementów <CacheKey> <KeyFragment>, aby określić unikalny identyfikator wpisów w pamięci podręcznej. Wartości KeyFragment mogą być statycznymi literałami lub ustawiane na podstawie zmiennych.
<Scope> lub <Prefix> Użyj elementów <Scope> lub <Prefix>, aby dodatkowo określić przestrzeń nazw kluczy pamięci podręcznej. <Scope> zawiera listę wstępnie zdefiniowanych wartości. Element <Prefix> zastępuje element <Scope> wybraną przez Ciebie wartością.

Te wartości są łączone w następujący sposób, a wartości <Scope> lub <Prefix> są oddzielone od wartości KeyFragment podwójnymi podkreśleniami. Wiele wartości KeyFragment jest też oddzielonych podwójnymi podkreśleniami.

scope | prefix__keyfragment[__keyfragment]

W przypadku zasad Response Cache policy możesz opcjonalnie dołączyć do tego klucza pamięci podręcznej wartości z nagłówka Accept odpowiedzi.

Używanie <CacheKey>

Element <CacheKey> konfiguruje sposób, w jaki Edge będzie tworzyć unikalny identyfikator (klucz) dla każdego tworzonego wpisu w pamięci podręcznej. Gdy Edge pobiera wartość z pamięci podręcznej, używa klucza pamięci podręcznej aby znaleźć prawidłową wartość. W przypadku zasad ResponseCache jedna konfiguracja określa klucz zarówno do buforowania, jak i pobierania. W przypadku zasad PopulateCache i LookupCache każda zasada musi mieć identyczne <CacheKey>elementy, aby wartość pobrana z pamięci podręcznej odpowiadała wartości umieszczonej w pamięci podręcznej.

Element <CacheKey> może zawierać wiele <KeyFragment> elementów. W czasie działania wartości określone przez <KeyFragment> elementy są łączone z 2 podkreśleniami między nimi, aby utworzyć część klucza pamięci podręcznej.

Na przykład ta konfiguracja tworzy wartość hello__world, która będzie używana w kluczu pamięci podręcznej:

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

W kluczu pamięci podręcznej możesz też używać wartości zmiennych, odwołując się do zmiennej w <KeyFragment> elemencie, jak pokazano tutaj:

<KeyFragment ref="variable_name"/>

Aby na przykład wartość klucza pamięci podręcznej zawierała wartość Content-Type wiadomości żądania, wykonaj te czynności:

<KeyFragment ref="request.header.Content-Type"/>

W tej konfiguracji zmienna request.header.Content-Type ma wartość application/json.

<CacheKey>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

Powoduje to utworzenie klucza pamięci podręcznej kończącego się na apiAccessToken__application/json__bar.

Listę zmiennych, których możesz używać, znajdziesz w artykule Zmienne.

Klucze pamięci podręcznej pochodzące z parametrów zapytania

Za pomocą zmiennych takich jak request.queryparam.<queryparam_name> i request.querystring, możesz skonfigurować klucz pamięci podręcznej tak, aby zawierał on części ciągu zapytania żądania. Na przykład ten adres URL używa 2 parametrów zapytania – param1 i param2 – których możesz użyć w kluczu pamięci podręcznej:

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

Element <CacheKey> może zawierać te wartości z konfiguracją taką jak ta:

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

W czasie działania klucz pamięci podręcznej będzie zawierać połączone wartości parametrów, jak w tym przykładzie:

other_key_parts__value1__value2

Pamiętaj, że gdy używasz zmiennych do wstawiania wartości z parametrów, wartości te będą łączone w kolejności sugerowanej przez kolejność elementów <KeyFragment>. Pamiętaj też, że Edge będzie używać tylko tych wartości, do których odwołujesz się za pomocą <KeyFragment> elementów. Jeśli listy parametrów zapytania w żądaniu się różnią, te różnice nie będą uwzględniane w kluczu pamięci podręcznej.

Alternatywą jest użycie zmiennej request.querystring, która wstawia cały ciąg parametrów dosłownie jako część klucza pamięci podręcznej. Pamiętaj, że chociaż ta metoda uwzględnia wszystkie parametry, jeśli kolejność parametrów różni się w kolejnych żądaniach, klucz będzie inny. Innymi słowy, param1=value1&param2=value2 i param2=value2&param1=value1 nie dają tej samej wartości klucza pamięci podręcznej.

Listę zmiennych, których możesz używać, znajdziesz w artykule Zmienne.

Używanie <Scope> i <Prefix>

Elementy <Scope> i <Prefix> umożliwiają rozszerzenie klucza o prefiks przestrzeni nazw. Wartości, które reprezentują, są dodawane na początku klucza pamięci podręcznej.

Domyślnie używany jest element <Scope>. Jest to wyliczenie, którego wartości mają zakres od szerokiego do wąskiego, a domyślną wartością jest najwęższa. Ta wartość domyślna jest używana, chyba że określisz inną wartość lub wartość elementu <Prefix>. Możesz zastąpić wartość <Scope> za pomocą elementu <Prefix> i określić niestandardową wartość przestrzeni nazw.

Na przykład wartość <Scope> „Global” – najszerszy zakres – reprezentuje nazwę organizacji i środowiska. Jeśli więc Twój serwer proxy jest wdrożony w organizacji o nazwie „mycompany” i środowisku o nazwie „prod”, wynikowa wartość prefiksu będzie wyglądać tak:

Konfiguracja Wynik
<Scope>Global</Scope> mycompany__prod__.

Jeśli używasz zakresu globalnego z kluczem pamięci podręcznej zdefiniowanym powyżej, wynik będzie wyglądać tak:

Konfiguracja Wynik
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

Jak opisano w artykule Zasady LookupCache, zakres można skonfigurować tak, aby zwiększyć jego szczegółowość od Global do Exclusive. Zakres Exclusive jest najbardziej szczegółowy, a tym samym minimalizuje ryzyko kolizji przestrzeni nazw w danej pamięci podręcznej. Każdy wpis w pamięci podręcznej z zakresem Exclusive ma prefiks w tym formacie:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

Na przykład klucz pamięci podręcznej utworzony przy użyciu wartości Exclusive dla <Scope> będzie wyglądać tak:

apifactory__test__weatherapi__16__default__apiAccessToken