Praca z kluczami pamięci podręcznej

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

Jeśli korzystasz z zasad pamięci podręcznej, możesz skonfigurować klucze pamięci podręcznej, aby zapewnić niepowtarzalność kluczy wartości z pamięci podręcznej. Klucz pamięci podręcznej, podobnie jak inne wartości, które możesz konfigurować, zapewnia niezawodny sposób pobierania tych samych danych, które umieścisz. Kluczy pamięci podręcznej używasz z zasadami wypełniania pamięci podręcznej, zasadami LookupCache, względem zasad InvalidateCache i zasadami buforowania odpowiedzi.

Wartości elementów konfiguracji – <CacheKey>/<KeyFragment>, <Scope> i <Prefix> – są połączone, aby utworzyć identyfikator powiązany z wartością umieszczoną w pamięci podręcznej. Aby pobrać wartość, użyj tej samej konfiguracji.

Możesz utworzyć klucz pamięci podręcznej 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 pamięci podręcznej. Wartości KeyFragment mogą być literałami statycznymi lub ustawionymi na podstawie zmiennych.
<Scope> lub <Prefix> Użyj elementów <Scope> lub <Prefix>, aby dodatkowo poszerzyć pamięć podręczną przestrzeni nazw. <Scope> podaje listę wstępnie zdefiniowanych wartości. Element <Prefix> zastępuje element <Scope> wybraną przez Ciebie wartością.

Te wartości są połączone w poniższy sposób – wartości <Scope> lub <Prefix> są oddzielone od wartości KeyFragment za pomocą podwójnych podkreśleń. Wiele wartości KeyFragment jest rozdzielonych podwójnymi podkreśleniami.

zakres | prefix__keyfragment[__keyfragment]

Za pomocą zasady buforowania odpowiedzi możesz opcjonalnie dołączyć ten klucz pamięci podręcznej do wartości z nagłówka Accept odpowiedzi.

Użycie klucza <CacheKey>

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

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

Na przykład ta konfiguracja tworzy wartość hello__world do użycia w kluczu pamięci podręcznej:

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

Możesz też użyć wartości zmiennych w kluczu pamięci podręcznej, odwołując się do zmiennej w elemencie <KeyFragment>, jak w tym przykładzie:

<KeyFragment ref="variable_name"/>

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

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

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

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

Wynika to z klucza pamięci podręcznej z końcówką apiAccessToken__application/json__bar.

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

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

Używając zmiennych, takich jak request.queryparam.<queryparam_name> i request.querystring, możesz skonfigurować klucz pamięci podręcznej tak, aby zawierał 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 uwzględniać te wartości z konfiguracją taką jak:

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

W czasie działania klucz pamięci podręcznej zawierałby połączone wartości parametrów w ten sposób:

other_key_parts__value1__value2

Pamiętaj, że gdy używasz zmiennych do wstawiania wartości z parametrów, wartości zostaną połą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ę w elementach <KeyFragment>. Jeśli listy parametrów zapytania różnią się, nie zostaną one uwzględnione w kluczu pamięci podręcznej.

Możesz też użyć 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 jest inna w zależności od żądania, klucz będzie inny. Oznacza to, że param1=value1&param2=value2 i param2=value2&param1=value1 nie dają takiej samej wartości klucza pamięci podręcznej.

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

Korzystanie z elementów <Scope> i <Prefiks>

Elementy <Scope> i <Prefix> umożliwiają uzupełnianie klucza o prefiks przestrzeni nazw. Reprezentowane przez nie wartości są dołączane do klucza pamięci podręcznej.

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

Na przykład wartość <Scope> „Cały świat” – najszerszym zakres – reprezentuje nazwę organizacji i środowiska. Jeśli więc serwer proxy jest wdrożony w organizacji o nazwie „mojafirma” i środowisku o nazwie „prod”, otrzymana na początku wartość będzie wyglądać tak:

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

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

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

Zgodnie z opisem w zasadzie LookupCache można skonfigurować zakres pod kątem zwiększenia specyficzności z Globalnego na Wyłączny. Zakres wyłączny jest najbardziej szczegółowy i dlatego stwarza minimalne ryzyko kolizji przestrzeni nazw w danej pamięci podręcznej. Każdy wpis w pamięci podręcznej z zakresem Wyłącznym jest poprzedzony w ten sposób:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

Na przykład klucz pamięci podręcznej utworzony z użyciem wartości Wyłącznej dla <Scope> wygląda tak:

apifactory__test__weatherapi__16__default__apiAccessToken