Unterstützung für HTTP-Antwortheader

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

In diesem Thema wird beschrieben, wie Edge HTTP/1.1-Caching-Header verarbeitet, wenn Sie die Richtlinie ResponseCache verwenden. Apigee Edge unterstützt derzeit einen Teil der HTTP/1.1-Caching-Header und -Anweisungen (nicht unterstützte Features werden in diesem Thema aufgeführt), die von Back-End-Zielservern (Ursprungsserver) empfangen werden.

Darüber hinaus führt Edge bei bestimmten Headern basierend auf ihren Anweisungen Aktionen aus. In einigen Fällen überschreiben diese HTTP/1.1-Cache-Header das Verhalten, das in der ResponseCache-Richtlinie angegeben ist. Wenn beispielsweise der Header Cache-Control von einem Back-End-Server zurückgegeben wird, kann die Anweisung s-maxage des Headers möglicherweise andere Ablaufeinstellungen in der Richtlinie überschreiben.

Header Support
Cachesteuerung Wird bei Antworten unterstützt, die von Back-End-Ursprungsservern zurückgegeben werden, aber nicht bei Clientanfragen. Edge unterstützt eine Teilmenge von Anweisungen.
Gültig bis Unterstützt. Kann überschrieben werden.
Entitäts-Tags (ETags) Spezifisches Verhalten für If-Match und If-None-Match.
If-Modified-Since Bei GET-Anfragen wird der Header an den Ursprungsserver übergeben, auch wenn es einen gültigen Cache-Eintrag gibt.
Accept-Encoding Edge sendet abhängig von den eingehenden Headern entweder komprimierte oder unkomprimierte Antworten.

Cache-Control

Apigee Edge unterstützt den Cache-Control-Header nur bei Antworten, die von Back-End-Ursprungsservern zurückgegeben werden (die HTTP/1.1-Spezifikation erlaubt Cache-Control-Header sowohl in Clientanfragen als auch in Ursprungsserverantworten). Ursprungsserver können sowohl Zielendpunkte enthalten, die in einem Apigee Edge API-Proxy definiert wurden, als auch Zielendpunkte, die mit TargetServer API-Aufrufen erstellt wurden.

Einschränkungen bei der Unterstützung der Cachesteuerung

Apigee Edge unterstützt einen Teil der Cache-Control-Antwortheaderfunktionen, die in der HTTP/1.1-Spezifikation definiert sind. Hinweis:

  • Apigee Edge unterstützt keine Cache-Control-Header, die mit eingehenden Clientanfragen eingehen.
  • Apigee Edge unterstützt nur das Konzept öffentlicher Caches. Gemäß der HTTP-Spezifikation kann Cache-Control entweder öffentlich (gemeinsam genutzt) oder privat (einzelner Nutzer) sein.
  • Apigee Edge unterstützt nur einen Teil der Cache-Control-Antwortanweisungen in der HTTP/1.1-Spezifikation. Weitere Informationen finden Sie unter Unterstützung für Antwortheader-Anweisungen der Cachesteuerung.

Unterstützung für Antwortheader-Anweisungen der Cachesteuerung

Apigee unterstützt eine Teilmenge von Anweisungen aus der HTTP/1.1-Spezifikation bei Antworten von Ursprungsservern. In der folgenden Tabelle wird die Unterstützung von Apigee Edge für HTTP-Cache-Control-Antwortheader-Anweisungen beschrieben.

Ausführlichere Informationen zu den hier aufgeführten Anweisungen finden Sie unter Cachesteuerung in der HTTP/1.1-Spezifikation.

Anweisung der Cachesteuerung Wie Apigee Edge die Anweisung verarbeitet
cache-extension Nicht unterstützt.
max-age

Wenn das Element <UseResponseCacheHeaders> in Ihrer ResponseCache-Richtlinie auf true festlegt ist, kann die Antwort für die durch diese Anweisung angegebene Anzahl von Sekunden im Cache gespeichert werden.

Diese Anweisung wird mit der Anweisung s-maxage überschrieben und überschreibt den Header Expires. Sie kann auch durch das Element <ExpirySettings> der Richtlinie überschrieben werden. Weitere Informationen finden Sie unter "Ablauf von Cache-Einträgen festlegen" und unter <UseResponseCacheHeaders> in ResponseCache-Richtlinie.

must-revalidate Nicht unterstützt. Alle Cache-Einträge werden von Apigee Edge gelöscht, sobald sie ablaufen.
no-cache

Edge speichert die Ursprungsantwort im Cache, muss aber noch einmal mit dem Ursprungsserver validiert werden, bevor sie verwendet werden kann, um alle nachfolgenden Clientanfragen zu erfüllen. Mit dieser Regel kann der Ursprung eine Antwort vom Typ "304 Not Modified" zurückgeben, um anzugeben, dass die Antwort aus dem Cache zurückgegeben werden soll. Die Verarbeitung, die erforderlich ist, um die gesamte Antwort zurückzugeben, wird so eingespart. Wenn der Ursprungsserver eine vollständige Antwort zurückgibt, wird der vorhandene Cache-Eintrag ersetzt. Alle in dieser Anweisung angegebenen Feldnamen werden ignoriert.

no-store Nicht unterstützt.
no-transform Nicht unterstützt.
private Nicht unterstützt. Wenn diese Anweisung empfangen wird, wird die Ursprungsantwort nicht im Cache gespeichert. Alle Feldnamen werden ignoriert.
proxy-revalidate Nicht unterstützt. Alle Cache-Einträge werden von Apigee Edge gelöscht, sobald sie ablaufen.
public Edge speichert die Ursprungsantwort im Cache, auch wenn in anderen Anweisungen etwas anderes angegeben ist. Gemäß der HTTP/1.1-Spezifikation ist die einzige Ausnahme von dieser Regel, wenn die Antwort einen Autorisierungsheader enthält.
s-maxage

Wenn das Element <UseResponseCacheHeaders> in Ihrer ResponseCache-Richtlinie auf true festlegt ist, kann die Antwort für die durch diese Anweisung angegebene Anzahl von Sekunden im Cache gespeichert werden.

Diese Anweisung überschreibt die Anweisung max-age und den Header Expires. Sie kann durch das Element <ExpirySettings> der Richtlinie überschrieben werden. Weitere Informationen finden Sie unter "Ablauf von Cache-Einträgen festlegen" und unter <UseResponseCacheHeaders> in ResponseCache-Richtlinie.

Läuft ab am

Wenn das Flag UseResponseCacheHeaders in der ResponseCache-Richtlinie auf true gesetzt ist, kann Edge den Header Expires verwenden, um die Gültigkeitsdauer (TTL) eines im Cache gespeicherten Eintrags zu bestimmen. In diesem Header wird ein Datum/eine Uhrzeit angegeben, nach dem bzw. der der Cache-Eintrag einer Antwort als veraltet gilt. Mit diesem Header können Server signalisieren, wann es in Ordnung ist, einen im Cache gespeicherten Wert basierend auf einem Zeitstempel zurückzugeben.

Zulässige Datumsformate für den Header Expires sind in der HTTP/1.1-Spezifikation beschrieben. Beispiel:

Gültig bis: Do., 1. Dez. 1994, 16:00:00 Uhr GMT

Ausführliche Informationen zu HTTP-Formaten für Datum/Uhrzeitfinden Sie unter Datum/Uhrzeit-Formate in der HTTP/1.1-Spezifikation.

Weitere Informationen zum Header Expires finden Sie unter Headerfelddefinitionen in der HTTP/1.1-Spezifikation.

ETag

Ein Entitäts-Tag (ETag) ist eine Kennung, die mit einer angeforderten Ressource verknüpft ist. Mithilfe eines ETags kann ein Server feststellen, ob die angeforderte Ressource und die zugehörige im Cache gespeicherte Ressource übereinstimmen. Beispielsweise könnte der Server die Antwort noch einmal im Cache speichern, wenn sie nicht mit dem im Cache gespeicherten Inhalt übereinstimmt. Wenn die ETags übereinstimmen, könnte er die im Cache gespeicherte Ressource zurückgeben.

Wenn ein Zielendpunkt eine Antwort mit einem ETag an Edge zurücksendet, speichert Edge das ETag zusammen mit der Antwort im Cache.

Weitere Informationen zu Entitäts-Tags finden Sie unter Protokollparameter in der HTTP/1.1-Spezifikation.

If-Match

Mit dem Anfrageheader If-Match ist eine im Cache gespeicherte Entität aktuell, wenn das ETag im Header mit dem im Cache gespeicherten ETag übereinstimmt. Außer GET-Anfragen werden alle Anfragen, die den Header If-Match angeben, an den Ursprungsserver übergeben, um sicherzustellen, dass die Caching-Einrichtungen des Ursprungsservers die Möglichkeit haben, die Anfrage zu verarbeiten.

Weitere Informationen zu If-Match finden Sie unter Headerfelddefinitionen in der HTTP/1.1-Spezifikation.

Wenn Edge eine eingehende GET-Anfrage von einem Client empfängt, der einen If-Match-Header enthält:

Wenn Then
Der Header If-Match gibt ein oder mehrere ETags an
  1. Apigee Edge ruft alle nicht abgelaufenen Cache-Einträge für die angegebene Ressource ab und vergleicht alle starken ETags für diese im Cache gespeicherten Einträge mit denen, die im If-Match-Header angegeben sind.
  2. Wenn eine Übereinstimmung gefunden wird, wird der Cache-Eintrag zurückgegeben.
  3. Andernfalls wird die Anfrage an den Ursprungsserver übergeben.
Der Header If-Match gibt das Zeichen „*“ an. Die Anfrage wird an den Ursprungsserver übergeben, um sicherzustellen, dass alle Caching-Einrichtungen des Ursprungsservers die Möglichkeit haben, die Anfrage zu verarbeiten.
Es wurde ein Cache-Eintrag mit demselben Anfrage-URI gefunden, der aber nur schwache ETags enthält Der Eintrag muss vom Ursprungsserver noch einmal validiert werden, bevor er an den Client zurückgegeben wird.
Die ETags stammen vom Ursprungsserver. Das ETag wird unverändert an den Client zurückgesendet

If-None-Match

Mit dem Header If-None-Match ist eine im Cache gespeicherte Entität aktuell, wenn das ETag im Header nicht mit dem im Cache gespeicherten ETag übereinstimmt. Außer GET-Anfragen werden alle Anfragen, die diesen Header enthalten, an den Ursprungsserver übergeben.

Wenn Edge eine eingehende GET-Anfrage mit diesem Header empfängt:

Wenn Then
Der Header If-None-Match gibt ein oder mehrere ETags an
  1. Apigee Edge ruft alle nicht abgelaufenen Cache-Einträge für den angegebenen URI ab und vergleicht alle starken ETags für diese im Cache gespeicherten Einträge mit den im If-None-Match-Header angegebenen Einträgen.
  2. Wenn eine Übereinstimmung gefunden wird, gibt Edge den Status 304 Nicht geändert zurück. Wenn keine Übereinstimmung gefunden wird, übergibt Edge die Anfrage an den Ursprungsserver.

Der Header If-None-Match gibt "*" und einen nicht abgelaufenen Cache-Eintrag für den angeforderten URI an.

Edge gibt den Status 304 Nicht geändert zurück
Es wurde ein Cache-Eintrag mit demselben Anfrage-URI gefunden, der aber nur schwache ETags enthält Der Eintrag muss vom Ursprungsserver neu validiert werden, bevor Edge ihn an den Client zurückgibt
Edge empfängt ein ETag von einem Ursprungsserver Das ETag wird unverändert an den Client zurückgesendet

If-Modified-Since

Wenn Apigee Edge in einer GET-Anfrage einen If-Modified-Since-Header empfängt, wird er an den Ursprungsserver weitergeleitet, auch wenn ein gültiger Cache-Eintrag vorhanden ist.

Dadurch wird sichergestellt, dass Aktualisierungen einer Ressource, die nicht Apigee Edge durchlaufen haben, berücksichtigt werden. Wenn der Ursprungsserver eine neue Entität zurückgibt, ersetzt Edge den vorhandenen Cache-Eintrag durch den neuen Wert. Wenn der Server den Status „304 Nicht geändert“ zurückgibt, gibt Edge den Antwortwert zurück, wenn der Header Last-Modified der im Cache gespeicherten Antwort anzeigt, dass er nicht geändert wurde.

Accept-Encoding

Wenn eine eingehende Anfrage den Header Accept-Encoding mit den Werten gzip, deflate oder compress enthält, antwortet der Ursprungsserver mit komprimierten Daten. Wenn nachfolgende Anfragen ohne die Header Accept-Encoding gesendet werden, erwarten sie eine unkomprimierte Antwort. Der Antwort-Caching-Mechanismus von Apigee ist in der Lage, sowohl komprimierte als auch nicht komprimierte Antworten abhängig von den eingehenden Headern zu senden, ohne zum Ursprungsserver zurückzukehren.

Header-Werte des Typs "Accept" können an Cache-Schlüssel angehängt werden, damit die Schlüssel für jedes im Cache gespeicherte Element aussagekräftiger werden. Weitere Informationen finden Sie unter "Cache-Schlüssel konfigurieren" in derResponseCache-Richtlinie.