Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Za pomocą zasad możesz przechowywać dane w pamięci podręcznej ogólnego przeznaczenia, aby przyspieszyć ich pobieranie. Dzięki tym zasadom Twój serwer proxy może przechowywać i pobierać dane z pamięci podręcznej w czasie działania:
- Zasada PopulateCache umożliwia dodawanie danych do pamięci podręcznej.
- Zasada LookupCache umożliwia dostęp do danych w pamięci podręcznej.
- Zasada InvalidateCache umożliwia opróżnianie pamięci podręcznej.
Te zasady są przeznaczone do ogólnego buforowania danych używanych przez serwery proxy.
Przykładowy kod w tym artykule jest oparty na przykładowym serwerze proxy Outbound OAuth w GitHubie (zobacz listę przykładów). Ten przykład używa zasady pamięci podręcznej do przechowywania tokena dostępu OAuth w celu ponownego użycia w wielu wywołaniach wychodzących.
Każdy typ zasady jest zdefiniowany przez schemat XML (.xsd). Dla odniesienia, schematy zasad są dostępne na GitHubie.
W tym przykładzie token dostępu OAuth jest zapisywany w pamięci podręcznej za pomocą zasady PopulateCache. Token OAuth jest pobierany w przypadku kolejnych żądań przez zasadę LookupCache. Gdy token dostępu wygaśnie, JavaScript służy do pobierania nowego tokena dostępu, który jest z kolei buforowany przez zasadę PopulateCache.
Wypełnianie pamięci podręcznej
Do zapisywania danych w pamięci podręcznej używaj zasady PopulateCache. Ten przykład zapisuje w pamięci podręcznej token dostępu OAuth. Informacje o zasadach znajdziesz w zasadach dotyczących pamięci podręcznej.
<PopulateCache name="token-cache"> <!-- The cache to write to. --> <CacheResource>mycache</CacheResource> <!-- The source of the data, a variable containing the value. --> <Source>twitter-translate.apiAccessToken</Source> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- A unique pointer (a flow variable value) to the data. Use this later to retrieve it. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> <!-- Entries placed into the cache with this policy will expire after 600 seconds. --> <ExpirySettings> <TimeoutInSec>600</TimeoutInSec> </ExpirySettings> </PopulateCache>
Zmienne mogą być wypełniane przez zasady lub kod. W tym przykładzie zmienna Source jest wypełniana przez to wywołanie JavaScriptu: context.setVariable('twitter-translate.apiAccessToken', getAccessToken());
Więcej informacji o kluczach pamięci podręcznej znajdziesz w artykule Praca z kluczami pamięci podręcznej.
Wyszukiwanie danych w pamięci podręcznej
Wartości z pamięci podręcznej możesz pobierać za pomocą zasady LookupCache. Ta zasada LookupCache
odczytuje wartość z mycache i zapisuje ją w
zmiennej twitter-translate.apiAccessToken. Informacje o zasadach
znajdziesz w zasadach dotyczących pamięci podręcznej.
<LookupCache name="token-cache"> <!-- The cache to read from. --> <CacheResource>mycache</CacheResource> <!-- Where to assign the retrieved value - here, a variable. --> <AssignTo>twitter-translate.apiAccessToken</AssignTo> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- The unique pointer (a flow variable value) that was used to store the data in the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id"></KeyFragment> </CacheKey> </LookupCache>
Unieważnianie pamięci podręcznej
Pamięć podręczną można unieważnić, określając nagłówek HTTP. Gdy otrzymane zostanie żądanie zawierające określony nagłówek HTTP, pamięć podręczna zostanie opróżniona. Informacje o zasadach znajdziesz w zasadach dotyczących pamięci podręcznej .
<InvalidateCache name="InvalidateMyCache"> <!-- The cache to invalidate. --> <CacheResource>test-cache</CacheResource> <!-- An enumeration representing a prefix for namespace scope. --> <Scope>Exclusive</Scope> <!-- Fragments constructing the unique pointer used when the data was put into the cache. --> <CacheKey> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" /> </CacheKey> <PurgeChildEntries>true</PurgeChildEntries> </InvalidateCache>