Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
W tym temacie opisano, jak Edge obsługuje nagłówki buforowania HTTP/1.1 podczas korzystania z zasady ResponseCache. Apigee Edge obecnie obsługuje podzbiór nagłówków i dyrektyw buforowania HTTP/1.1 (nieobsługiwane funkcje są wymienione w tym temacie) otrzymanych z docelowych serwerów backendu (źródłowych).
Dodatkowo Edge w niektórych nagłówkach podejmuje działania zgodnie z własnymi dyrektywami. W niektórych przypadkach nagłówki pamięci podręcznej HTTP/1.1 zastępują zachowanie określone w zasadzie ResponseCache.
Jeśli na przykład nagłówek Cache-Control
jest zwracany z serwera backendu, dyrektywa s-maxage
nagłówka może potencjalnie zastąpić inne ustawienia wygaśnięcia określone w zasadzie.
Nagłówek | Pomoc |
---|---|
Kontrola pamięci podręcznej | Obsługiwane w przypadku odpowiedzi zwracanych z serwerów początkowych backendu, ale nie w żądaniach klienta. Edge obsługuje podzbiór dyrektyw. |
Wygasa | Obsługiwane. Można ją zastąpić. |
Tagi encji (ETag) | Specjalne działanie właściwości If-Match i If-None-Match. |
If-Modified-Modified | W przypadku żądań GET nagłówek jest przekazywany do serwera pierwotnego, nawet jeśli istnieje prawidłowy wpis w pamięci podręcznej. |
Accept-Encoding (Akceptuj kodowanie) | Edge wysyła odpowiedzi skompresowane lub nieskompresowane w zależności od nagłówków przychodzących. |
Cache-Control
Apigee Edge obsługuje nagłówek Cache-Control
tylko w odpowiedziach zwracanych z serwerów początkowych backendu (specyfikacja HTTP/1.1 zezwala na nagłówki Cache-Control
zarówno w żądaniach klientów, jak i odpowiedziach serwera pierwotnego). Serwery źródłowe mogą zawierać zarówno docelowe punkty końcowe zdefiniowane w serwerze proxy Apigee Edge API, jak i te utworzone przy użyciu wywołań interfejsu TargetServer API.
Ograniczenia obsługi Cache-Control
Apigee Edge obsługuje podzbiór funkcji nagłówka odpowiedzi Cache-Control
zdefiniowanych w specyfikacji HTTP/1.1. Uwaga:
- Apigee Edge nie obsługuje nagłówków
Cache-Control
, które przychodzą z przychodzącymi żądaniami klienta. - Apigee Edge obsługuje tylko pojęcie publicznych pamięci podręcznych. Zgodnie ze specyfikacją HTTP
Cache-Control
może być publiczny (udostępniony) lub prywatny (pojedynczy użytkownik). - Apigee Edge obsługuje tylko podzbiór dyrektyw odpowiedzi
Cache-Control
w specyfikacji HTTP/1.1. Więcej informacji znajdziesz w sekcji Obsługa dyrektyw nagłówków odpowiedzi Cache-Control.
Obsługa dyrektyw nagłówka odpowiedzi Cache-Control
Apigee obsługuje podzbiory dyrektyw ze specyfikacji HTTP/1.1 w odpowiedziach z serwerów źródłowych. W tabeli poniżej opisujemy obsługę przez Apigee Edge dyrektyw nagłówka odpowiedzi HTTP Cache-Control.
Więcej informacji o wymienionych tutaj dyrektywach znajdziesz w sekcji Cache-Control w specyfikacji HTTP/1.1.
Dyrektywa Cache-Control | Jak Apigee Edge przetwarza dyrektywę |
cache-extension |
Nieobsługiwane. |
max-age |
Jeśli zasada ResponseCache ustawia element Ta dyrektywa została zastąpiona przez dyrektywę |
must-revalidate |
Nieobsługiwane. Wszystkie wpisy pamięci podręcznej są usuwane przez Apigee Edge natychmiast po wygaśnięciu. |
no-cache |
Edge zapisuje w pamięci podręcznej odpowiedź źródła, ale przed użyciem musi zostać ponownie zweryfikowana na serwerze pierwotnym w celu spełnienia kolejnych żądań klienta. Ta reguła pozwala źródłom zwracać odpowiedź 304 (nie zmodyfikowano), aby wskazać, że odpowiedź ma być zwracana z pamięci podręcznej, co pozwala zapisać proces przetwarzania wymagany do zwrócenia całej odpowiedzi. Jeśli serwer pierwotny zwróci pełną odpowiedź, zastąpi istniejący wpis pamięci podręcznej. Wszystkie nazwy pól określone w tej dyrektywie są ignorowane. |
no-store |
Nieobsługiwane. |
no-transform |
Nieobsługiwane. |
private |
Nieobsługiwane. W przypadku otrzymania tej dyrektywy odpowiedź dotycząca źródła nie jest przechowywana w pamięci podręcznej. Wszystkie nazwy pól są ignorowane. |
proxy-revalidate |
Nieobsługiwane. Wszystkie wpisy pamięci podręcznej są usuwane przez Apigee Edge natychmiast po wygaśnięciu. |
public |
Edge zapisuje w pamięci podręcznej odpowiedź dotyczącą źródła, nawet jeśli inne dyrektywy wskazują inaczej. Zgodnie ze specyfikacją HTTP/1.1 jedynym wyjątkiem od tej reguły jest sytuacja, w której odpowiedź zawiera nagłówek autoryzacji. |
s-maxage |
Jeśli zasada ResponseCache ustawia element Zastępuje ona dyrektywę |
Wygasa
Gdy flaga UseResponseCacheHeaders
w zasadzie ResponseCache jest ustawiona na true
, Edge może użyć nagłówka Expires
do określenia czasu życia wpisu w pamięci podręcznej. Ten nagłówek określa datę i godzinę, po której wpis w pamięci podręcznej odpowiedzi jest uważany za nieaktualny. Ten nagłówek pozwala serwerom zasygnalizować, kiedy można zwrócić wartość z pamięci podręcznej, na podstawie sygnatury czasowej.
Akceptowane formaty dat w nagłówku Expires
są opisane w specyfikacji HTTP/1.1. Na przykład:
Data wygaśnięcia: czw, 01 gru 1994 r., godz. 16:00:00 czasu GMT
Szczegółowe informacje o formatach daty i godziny HTTP znajdziesz w sekcji Formaty daty/godziny w specyfikacji HTTP/1.1.
Więcej informacji o nagłówku Expires
znajdziesz w sekcji Definicje pól nagłówka w specyfikacji HTTP/1.1.
ETag
Tag encji (ETag) to identyfikator powiązany z żądanym zasobem. Za pomocą typu ETag serwer może określić, czy żądany zasób jest zgodny z zasobem powiązanym z pamięcią podręczną. Serwer może na przykład ponownie zapisać odpowiedź w pamięci podręcznej, jeśli nie będzie ona zgodna z tym, co jest aktualnie przechowywane w pamięci podręcznej. Może zwrócić zasób z pamięci podręcznej, jeśli pasują do identyfikatorów ETag.
Gdy docelowy punkt końcowy wysyła odpowiedź z ETag z powrotem do Edge, Edge przechowuje ETag w pamięci podręcznej wraz z odpowiedzią.
Więcej informacji o tagach encji znajdziesz w sekcji Parametry protokołu w specyfikacji HTTP/1.1.
Jeśli dopasowanie
Dzięki nagłówkowi żądania If-Match
encja z pamięci podręcznej jest aktualna, jeśli ETag w nagłówku jest zgodny z elementem ETag przechowywany w pamięci podręcznej. Wszystkie żądania inne niż GET, które określają nagłówek If-Match
, są przekazywane do serwera pierwotnego, aby zapewnić możliwość przetworzenia żądania przez infrastrukturę pamięci masowej źródła.
Więcej informacji na temat If-Match
znajdziesz w sekcji Definicje pól nagłówka w specyfikacji HTTP/1.1.
Jeśli Edge otrzyma od klienta przychodzące żądanie GET zawierające nagłówek If-Match
:
Jeśli | Potem |
---|---|
Nagłówek If-Match zawiera co najmniej 1 tag ETag |
|
Nagłówek If-Match zawiera znak „*”. |
Żądanie jest przekazywane do serwera pierwotnego, aby zapewnić, że wszystkie obiekty buforujące źródła mają szansę na przetworzenie żądania |
Znaleziono wpis w pamięci podręcznej z tym samym identyfikatorem URI żądania, ale zawiera on tylko słabe tagi ETag | Przed zwróceniem wpisu do klienta musi on zostać ponownie zweryfikowany przez serwer pierwotny |
Tagi ETag pochodzą z serwera pierwotnego. | Parametr ETag jest zwracany do klienta w niezmienionej postaci |
Jeśli-nie-dopasowanie
Dzięki nagłówku If-None-Match
encja zapisana w pamięci podręcznej jest aktualna, jeśli element ETag w nagłówku nie pasuje do zapisanego w pamięci podręcznej tagu ETag. Żądania inne niż GET zawierające ten nagłówek są przekazywane do serwera pierwotnego.
Jeśli Edge otrzyma przychodzące żądanie GET z tym nagłówkiem:
Jeśli | Potem |
---|---|
Nagłówek If-None-Match zawiera co najmniej 1 tag ETag |
|
Nagłówek |
Edge zwraca stan 304 Nie zmodyfikowano. |
Znaleziono wpis w pamięci podręcznej o tym samym identyfikatorze URI żądania, ale zawierający tylko słabe tagi ETag | Wpis musi zostać ponownie zweryfikowany przez serwer pierwotny, zanim Edge zwróci go do klienta |
Edge otrzymuje ETag z serwera pierwotnego | Parametr ETag jest zwracany do klienta w niezmienionej postaci |
Jeśli-zmodyfikowano-od
Jeśli Apigee Edge otrzyma w żądaniu GET nagłówek If-Modified-Since
, zostanie on przekazany do serwera pierwotnego, nawet jeśli istnieje prawidłowy wpis w pamięci podręcznej.
Dzięki temu uwzględnione są wszystkie aktualizacje zasobu, które nie zostały przekazane przez Apigee Edge. Jeśli serwer pierwotny zwróci nową encję, Edge zastępuje istniejący wpis pamięci podręcznej nową wartością. Jeśli serwer zwraca stan 304 (Nie zmodyfikowano), Edge zwraca wartość odpowiedzi, jeśli nagłówek Last-Modified
odpowiedzi z pamięci podręcznej wskazuje, że odpowiedź nie została zmieniona.
Akceptuj kodowanie
Gdy żądanie przychodzące zawiera nagłówek Accept-Encoding
z wartościami gzip
, deflate
lub compress
, serwer pierwotny odpowiada skompresowanym danymi. Gdy kolejne żądania przychodzą bez nagłówków Accept-Encoding
, oczekują odpowiedzi nieskompresowanej. Mechanizm buforowania odpowiedzi Apigee może wysyłać odpowiedzi skompresowane i nieskompresowane w zależności od nagłówków przychodzących bez powrotu do serwera pierwotnego.
Do kluczy pamięci podręcznej możesz dołączyć wartości nagłówków Accept, aby klucze były bardziej zrozumiałe dla każdego elementu zapisanego w pamięci podręcznej. Więcej informacji znajdziesz w sekcji „Konfigurowanie klucza pamięci podręcznej” artykułu Zasady dotyczące buforowania odpowiedzi.