Cookies, Header und Polling konfigurieren
In diesem Thema wird erläutert, wie die Cache-Verwaltung von Cookies, HTTP-Headern und Original-Serverabfragen konfiguriert wird. Dazu gehört das Ändern des Standardverhaltens, das dazu führt, dass der Cache von dokumentierten Standards abweicht, das Überschreiben von HTTP-Headern, die dazu führen könnten, dass cachbarer Inhalt nicht im Cache gespeichert wird, und das Konfigurieren des Caches, dass immer der Ursprung nach aktualisierten Inhalten abgefragt wird.
Abweichung des Cache-Verhaltens von den Standards
Standardmäßig entspricht der integrierte Cache den folgenden RFC-Standards:
- RFC 2616, “HTTP HTTP/1.1”
- Das in RFC 2617, “HTTP-Authentifizierung: Basic and Digest Access Authentication” beschriebene Caching-Verhalten
- Das in RFC 2965, “HTTP State Management Mechanism” beschriebene Caching-Verhalten
Die integrierten Richtlinien und die Attribute der Standard-Inhaltsgruppe gewährleisten die Konformität mit den meisten dieser Standards.
Das standardmäßige integrierte Cache-Verhalten weicht wie folgt von der Spezifikation ab:
- Es gibt eine begrenzte Unterstützung für den Vari-Header. Standardmäßig wird jede Antwort, die einen Vari-Header enthält, als nicht cachbar angesehen, sofern sie nicht komprimiert ist. Eine komprimierte Antwort enthält Inhaltscodierung: gzip, Inhaltscodierung: deflate oder Inhaltscodierung: pack200-gzip und ist auch dann cachbar, wenn sie den Header Vary: Accept-Codierung enthält.
- Der integrierte Cache ignoriert die Werte der Header-Cache-Steuerung: kein Cache und Cache-Kontrolle: privat. Zum Beispiel wird eine Antwort, die Cache-Kontrolle enthält: NO-Cache=”set-Cookie” behandelt, als ob die Antwort Cache-Control: no-cache enthielt. Standardmäßig wird die Antwort nicht zwischengespeichert.
- 静脉Bild (Content-Typ = image/*) wird immer als cachbar betrachtet, auch wenn eine Bild-Antwort Set-Cookie- oder set-cookie2-Header enthält oder wenn eine Bildanforderung einen Cookie-Header enthält. Der integrierte Cache entfernt Set-Cookie- und set-cookie2-Header aus einer Antwort, bevor er zwischengespeichert wird. Dies weicht von RFC 2965 ab. Sie können RFC-konformes Verhalten wie folgt konfigurieren:
add cache policy rfc_compliant_images_policy -rule "http.res.header.set-cookie2.exists || http.res.header.set-cookie.exists" -action NOCACHE bind cache global rfc_compliant_images_policy -priority 100 -type REQ_OVERRIDE
- Die folgenden Cache-Control-Header in einer Anforderung erzwingen einen RFC-kompatiblen Cache, eine zwischengespeicherte Antwort vom Original-Server neu zu laden:
Cache-control: max-age=0
Cache-control: no-cache
Zum Schutz vor Denial-of-Service-Angriffen ist dieses Verhalten nicht die Standardeinstellung.
- Standardmäßig betrachtet das Caching-Modul eine Antwort als cachbar, sofern nicht anders ein Response-Header-Status vorliegt. Um dieses Verhalten mit RFC 2616 konform zu machen, setzen Sie
-weakPosRelExpiry
und-weakNegResExpiry
für alle Inhaltsgruppen auf 0.
Cookies aus einer Antwort entfernen
Cookies sind oft für einen Benutzer personalisiert und sollten in der Regel nicht zwischengespeichert werden. Der ParameterRemove Response Cookies
entfernt die HeaderSet-Cookie and Set-Cookie2
, bevor eine Antwort zwischenspeichert wird. Standardmäßig verhindert die OptionRemove Response Cookies
für eine Content-Gruppe das Zwischenspeichern von Antworten mit den HeadernSet-Cookie
oderSet-Cookie2
.
Hinweis:Wenn Bilder zwischengespeichert werden, besteht das integrierte Verhalten darin, die Header
Set-Cookie
undSet-Cookie2
vor dem Zwischenspeichern zu entfernen, unabhängig davon, wie die Content-Gruppe konfiguriert ist.Citrix empfiehlt, dass Sie den Standard
Remove Response Cookies
für jede Content-Gruppe akzeptieren, die eingebettete Antworten speichert, z. B. Bilder.
Konfigurieren vonRemove Response Cookies
für eine Content-Gruppe über die Befehlszeilenschnittstelle:
Geben Sie in der Befehlszeile Folgendes ein:
set cache contentgroup
Konfigurieren von Response-Cookies für eine Inhaltsgruppe mithilfe der NetScaler GUI
- Navigieren Sie zuOptimierung>Integriertes Caching>Inhaltsgruppenund wählen Sie die Inhaltsgruppe aus.
- Wählen Sie auf der RegisterkarteAndere在der Gruppe静脉stellungendie Option Response-Cookies entfernen aus.
静脉fügen von HTTP-Headern zur Reaktionszeit
Der integrierte Cache kann HTTP-Header in Antworten einfügen, die sich aus Cache-Anforderungen ergeben. Die NetScaler Appliance ändert keine Header in Antworten, die aus Cache-Fehlern resultieren.
In der folgenden Tabelle werden Kopfzeilen beschrieben, die Sie in eine Antwort einfügen können.
Header | Spezifikation |
---|---|
Alter | Gibt das Alter der Antwort in Sekunden an, berechnet aus dem Zeitpunkt, zu dem die Antwort auf dem Original-Server generiert wurde. Standardmäßig fügt der Cache einen Age-Header für jede Antwort ein, die aus dem Cache bereitgestellt wird. |
via | Listet Protokolle und Empfänger zwischen den Start- und Endpunkten für eine Anfrage oder eine Antwort auf. Die NetScaler Appliance fügt in jede Antwort, die sie aus dem Cache liefert, einen Via-Header ein. Der Standardwert des eingefügten Headers istNS-CACHE-10.0 : letztes Oktett der NetScaler IP-Adresse. Weitere Informationen finden Sie unter “Globale Attribute für das Caching konfigurieren.” |
Tag |
Der Cache unterstützt die Response-Validierung mit Last-Modified undTag Headern, um festzustellen, ob eine Antwort veraltet ist. Der Cache fügt nur dann eineTag 在eine Antwort ein, wenn er die Antwort zwischenspeichert und der Original-Server keinen eigenenTag Header eingefügt hat. DerTag Wert ist eine beliebige eindeutige Zahl. DerTag 温特毛皮一张Antwort andert西奇,要是您或生效iginal-Server aktualisiert wird, aber er bleibt unverändert, wenn der Server eine 304-Antwort (Objekt nicht aktualisiert) sendet. Original-Server generieren normalerweise keine Validatoren für dynamischen Inhalt, da dynamischer Inhalt als nicht cachbar angesehen wird. Sie können dieses Verhalten außer Kraft setzen. Beim Einfügen vonTag Header darf der Cache keine vollständigen Antworten liefern. Stattdessen muss der Benutzeragent die dynamische Antwort, die vom integrierten Cache zum ersten Mal gesendet wurde, zwischenspeichern. Um einen Benutzeragenten zum Zwischenspeichern einer Antwort zu zwingen, konfigurieren Sie den integrierten Cache so, dass er einenTag Header einfügt und den vom Ursprung bereitgestellten Cache-Control-Header ersetzt. |
Cache-Steuerung | Die NetScaler Appliance ändert normalerweise keine Header zur Cachefähigkeit in Antworten, die vom Original-Server aus bereitgestellt werden. Wenn der Original-Server eine Antwort sendet, die als nicht cachbar gekennzeichnet ist, behandelt der Client die Antwort als nicht cachbar, auch wenn die NetScaler Appliance die Antwort im Cache speichert. Um dynamische Antworten in einem Benutzeragenten zwischenzuspeichern, können Sie Cache-Control-Header vom Original-Server ersetzen. Dies gilt nur für Benutzeragenten und andere dazwischenliegende Caches. Sie haben keinen Einfluss auf den integrierten Cache. |
Header | Spezifikation |
---|---|
Alter | Gibt das Alter der Antwort in Sekunden an, berechnet aus dem Zeitpunkt, zu dem die Antwort auf dem Original-Server generiert wurde. Standardmäßig fügt der Cache einen Age-Header für jede Antwort ein, die aus dem Cache bereitgestellt wird. |
via | Listet Protokolle und Empfänger zwischen den Start- und Endpunkten für eine Anfrage oder eine Antwort auf. Die NetScaler Appliance fügt in jede Antwort, die sie aus dem Cache liefert, einen Via-Header ein. Der Standardwert des eingefügten Headers ist “NS-CACHE-9.2: letztes Oktett der NetScaler-IP-Adresse”. Weitere Informationen finden Sie unter “Globale Attribute für das Caching konfigurieren.” |
Tag |
Der Cache unterstützt die Antwortvalidierung mithilfe der Header “Letzte Änderung” und “Tag”, um festzustellen, ob eine Antwort veraltet ist. Der Cache fügt nur dann eineTag 在eine Antwort ein, wenn er die Antwort zwischenspeichert und der Original-Server keinen eigenenTag Header eingefügt hat. DerTag Wert ist eine beliebige eindeutige Zahl. DerTag 温特毛皮一张Antwort andert西奇,要是您或生效iginal-Server aktualisiert wird, aber er bleibt unverändert, wenn der Server eine 304-Antwort (Objekt nicht aktualisiert) sendet. Original-Server generieren normalerweise keine Validatoren für dynamischen Inhalt, da dynamischer Inhalt als nicht cachbar angesehen wird. Sie können dieses Verhalten außer Kraft setzen. Beim Einfügen vonTag Header darf der Cache keine vollständigen Antworten liefern. Stattdessen muss der Benutzeragent die dynamische Antwort, die vom integrierten Cache zum ersten Mal gesendet wurde, zwischenspeichern. Um einen Benutzeragenten zum Zwischenspeichern einer Antwort zu zwingen, konfigurieren Sie den integrierten Cache so, dass er einenTag Header einfügt und den vom Ursprung bereitgestellten Cache-Control-Header ersetzt. |
Cache-Steuerung | Die NetScaler Appliance ändert normalerweise keine Header zur Cachefähigkeit in Antworten, die vom Original-Server aus bereitgestellt werden. Wenn der Original-Server eine Antwort sendet, die als nicht cachbar gekennzeichnet ist, behandelt der Client die Antwort als nicht cachbar, auch wenn die NetScaler Appliance die Antwort im Cache speichert. Um dynamische Antworten in einem Benutzeragenten zwischenzuspeichern, können Sie Cache-Control-Header vom Original-Server ersetzen. Dies gilt nur für Benutzeragenten und andere dazwischenliegende Caches. Sie haben keinen Einfluss auf den integrierten Cache. |
Fügen Sie einen Alter-, via- oder Tag-Header ein
In den folgenden Verfahren wird beschrieben, wie Age-, Via- und ETag-Header eingefügt werden.
Fügen Sie mithilfe der NetScaler-Befehlsschnittstelle einen Age-, Via- oder ETAG-Headerein:
Geben Sie in der Befehlszeile Folgendes ein:
set cache contentgroup
Konfigurieren Sie den Age-, Via- oder ETAG-Header mithilfe der NetScaler GUI
- Navigieren Sie zuOptimierung>Integriertes Caching>Inhaltsgruppenund wählen Sie dieInhaltsgruppeaus.
- Wählen Sie auf der RegisterkarteAndere在der Gruppe HTTP-Header-Einfügungen nach Bedarf die OptionenVia,AgeoderETagaus.
Die Werte für die anderen Kopfzeilentypen werden automatisch berechnet. Den Via-Wert konfigurieren Sie in den Haupteinstellungen für den Cache.
Fügen Sie einen Cache-Control-Header ein
Wenn der integrierte Cache einen vom Originalserver eingefügten Cache-Control-Header ersetzt, ersetzt er auch den Expires-Header. Der neue Expires-Header enthält eine Ablaufzeit in der Vergangenheit. Dadurch wird sichergestellt, dass HTTP/1.0-Clients und -Caches (die den Cache-Control-Header nicht verstehen) den Inhalt nicht zwischenspeichern.
Fügen Sie mithilfe der NetScaler Befehlszeilenschnittstelle einen Cache-Control-Header ein
Geben Sie in der Befehlszeile Folgendes ein:
set cache contentgroup
Fügen Sie einen Cache-Control-Header mithilfe der NetScaler GUI ein
- Navigieren Sie zuOptimierung>Integriertes Caching>Content-Gruppenund
- Klicken Sie auf die RegisterkarteAblaufmethode, löschen Sie die Heuristik und die standardmäßigen Ablaufeinstellungen und legen Sie den entsprechenden Wert im Textfeld Inhalt ablaufen nach fest.
- Klicken Sie auf die RegisterkarteAndereund geben Sie den Header, den Sie einfügen möchten, in das Textfeld Cache-Control ein. Klicken Sie alternativ auf Konfigurieren, um die Cache-Control-Direktiven in zwischengespeicherten Antworten festzulegen.
Ignoriere Cache-Kontrolle und Pragma-Header in Anfragen
Standardmäßig verarbeitet das Caching-Modul Cache-Control- und Pragma-Header. Die folgenden Token in den Cache-Control-Headern werden wie in RFC 2616 beschrieben verarbeitet.
- max-age
- max-abgestanden
- nur-wenn-zwischengespeichert
- kein Cache
静脉Pragma: No-Cache-Header in einer Anforderung wird genauso behandelt wie ein Cache-Control: No-Cache-Header.
Wenn Sie das Caching-Modul so konfigurieren, dass es die Header Cache-Control und Pragma ignoriert, veranlasst eine Anforderung, die einen Cache-Control: No-Cache-Header enthält, die NetScaler Appliance, die Antwort vom Original-Server abzurufen, aber die zwischengespeicherte Antwort wird nicht aktualisiert. Wenn das Caching-Modul die Header Cache-Control und Pragma verarbeitet, wird die zwischengespeicherte Antwort aktualisiert.
In der folgenden Tabelle sind die Auswirkungen verschiedener Einstellungen für diese Header und die Einstellung Neuladeanforderung des Browsers ignorieren zusammengefasst.
静脉stellung für Ignorieren-Cache-Control und Pragma-Header | 静脉stellung für Neuladeanfrage des Browsers ignorieren | Ergebnis |
---|---|---|
Ja | Ja oder Nein | Ignorieren Sie die Cache-Control- und Pragma-Header des Clients, einschließlich der Cache-Control: no-Cache-Direktive. |
Nein | Ja | Der Cache-Control: No-Cache-Header erzeugt einen Cache-Fehlschuss, aber eine Antwort, die sich bereits im Cache befindet, wird nicht aktualisiert. |
Nein | Nein | 静脉e Anforderung, die einen Cache-Control: No-Cache-Header enthält, verursacht einen Cache-Fehlschlag und die gespeicherte Antwort wird aktualisiert. |
So ignorieren Sie Cache-Control- und Pragma-Header in einer Anforderung mithilfe der Befehlszeilenschnittstelle
Geben Sie in der Befehlszeile Folgendes ein:
set cache contentgroup
So ignorieren Sie Anfragen zum Neuladen von Browsern mithilfe der Befehlszeilenschnittstelle
Geben Sie in der Befehlszeile Folgendes ein:
set cache contentgroup
Hinweis:Standardmäßig ist der Parameter -IgnoreReloadReq auf YES festgelegt.
Ignorieren Sie Cache-Control- und Pragma-Header in einer Anfrage mithilfe der GUI
- Navigieren Sie zuOptimierung>Integriertes Caching>Inhaltsgruppenund wählen Sie die Inhaltsgruppe aus.
Wählen Sie auf der RegisterkarteAndere在der Gruppe静脉stellungendie OptionCache-Control und Pragma-Header ignorieren在der OptionAnfragenaus.
Beispiel für eine Richtlinie zum Ignorieren von Cache-Control-Headern:
Im folgenden Beispiel konfigurieren Sie eine Richtlinie zum Überschreiben der Anforderungszeit, um Antworten zu cachen, die Content-Typ enthalten: image/* unabhängig vom Cache-Control-Header in der Antwort.
Konfigurieren einer Richtlinie zum Überschreiben der Anforderungszeit, um alle Antworten mit image/* zu cachen
Leeren Sie den Cache mit der Option Alle ungültig machen.
Konfigurieren Sie eine neue Cache-Richtlinie und leiten Sie die Richtlinie an eine bestimmte Content-Gruppe weiter. Weitere Informationen finden Sie unter “Konfigurieren einer Richtlinie im integrierten Cache. “
Stellen Sie sicher, dass die von der Richtlinie verwendete Content-Gruppe so konfiguriert ist, dass sie Cache-Control-Header ignoriert, wie in “Cache-Control und Pragma-Header in Requests ignorieren” beschrieben ist.
Binden Sie die Richtlinie an die Richtlinienbank für die Anforderungszeitüberschreibung.
Weitere Informationen finden Sie unterGlobal Binden einer integrierten Caching-Richtlinie.
Poll-Original-Server jedes Mal, wenn eine Anfrage empfangen wird
Sie können die NetScaler Appliance so konfigurieren, dass sie immer den Original-Server konsultiert, bevor eine gespeicherte Antwort gesendet wird. Dies ist bekannt als Poll Every Time (PET). Wenn die NetScaler Appliance den Original-Server konsultiert und die PET-Antwort nicht abgelaufen ist, überschreibt eine vollständige Antwort des Original-Servers den zwischengespeicherten Inhalt nicht. Diese Eigenschaft ist nützlich, wenn Sie kundenspezifische Inhalte bereitstellen.
Nachdem eine PET-Antwort abgelaufen ist, aktualisiert die NetScaler Appliance sie, wenn die erste vollständige Antwort vom Original-Server eingeht.
Die Funktion “Poll Every Time” (PET) funktioniert wie folgt:
Bei einer zwischengespeicherten Antwort, die Validatoren in Form eines Tags oder eines Headers für die letzte Änderung enthält, wird die Antwort automatisch als PET gekennzeichnet und zwischengespeichert, wenn sie abläuft.
您可以在宠物皮毛一张Content-Gruppe konfigurieren.
Wenn Sie eine Content-Gruppe als PET konfigurieren, wird jede Antwort in der Content-Gruppe als PET gekennzeichnet. Die PET-Inhaltsgruppe kann Antworten speichern, die keine Validatoren haben. Antworten, die automatisch als PET gekennzeichnet sind, sind immer abgelaufen. Antworten, die zu einer PET-Inhaltsgruppe gehören, können nach einer Verzögerung ablaufen, je nachdem, wie Sie die Content-Gruppe konfigurieren.
Zwei Arten von Anfragen sind von Abfragen betroffen:
- Bedingte Anfragen: Ein Kunde stellt eine bedingte Anfrage aus, um sicherzustellen, dass die Antwort, die er hat, die neueste Kopie ist. Eine User-Agent-Anfrage für eine zwischengespeicherte PET-Antwort wird immer in eine bedingte Anforderung umgewandelt und an den Original-Server gesendet. Eine bedingte Anforderung hat Validatoren in den
If-None-Match
KopfzeilenIf-Modified-Since
oder. DerIf-Modified-Since
Header enthält die Zeit aus demLast-Modified
Header. Ein If-None-Match-Header enthält den Tag-Header-Wert der Antwort. Wenn die Kopie der Antwort des Clients neu ist, antwortet der Original-Server mit 304 Not Modified. Wenn die Kopie veraltet ist, generiert eine bedingte Antwort ein 200 OK, das die gesamte Antwort enthält. - Unbedingte Anfragen: Eine bedingungslose Anforderung kann nur 200 OK generieren, die die gesamte Antwort enthält.
Antwort des Original-Servers | Aktion |
---|---|
Sende die vollständige Antwort | Der Original-Server sendet die Antwort unverändert an den Client. Wenn die zwischengespeicherte Antwort abgelaufen ist, wird sie aktualisiert. |
304 nicht modifiziert | Die folgenden Header-Werte in der 304-Antwort werden mit der zwischengespeicherten Antwort zusammengeführt und die zwischengespeicherte Antwort wird dem Client zugestellt: Date, Expires, Age, Cache-Control-Header Max-Age und S-Maxage-Token |
401 nicht autorisiert; 400 schlechte Anfrage; 405 Methode nicht zulässig; 406 nicht akzeptabel; 407 Proxy-Authentifizierung erforderlich | Die Antwort des Ursprungs wird dem Kunden so serviert, wie sie ist. Die zwischengespeicherte Antwort wird nicht geändert. |
Jede andere Fehlerantwort, z. B. 404 Not Found | Die Antwort des Ursprungs wird dem Kunden so serviert, wie sie ist. Die zwischengespeicherte Antwort wird entfernt. |
Hinweis:Der Parameter “Umfrage jedes Mal” behandelt die betroffenen Antworten als nicht speicherbar.
So konfigurieren Sie die Umfrage jedes Mal mit der Befehlszeilenschnittstelle
Geben Sie in der Befehlszeile Folgendes ein:
add cache contentgroup
Umfrage mit der GUI
- Navigieren Sie zuOptimierung>Integriertes Caching>Inhaltsgruppenund wählen Sie die Inhaltsgruppe aus.
Wählen Sie auf der RegisterkarteAndere在der Gruppe Einstellungen die Option Jedes Mal abfragen (zwischengespeicherten Inhalt mit Ursprung für jede Anfrage überprüfen).
PET und kundenspezifische Inhalte
Die PET-Funktion kann sicherstellen, dass der Inhalt für einen Kunden angepasst wird. Beispielsweise untersucht eine Website, die Inhalte in mehreren Sprachen bereitstellt, den Accept-Language-Anforderungsheader, um die Sprache für den Inhalt auszuwählen, den sie bereitstellt. Bei einer mehrsprachigen Website, bei der Englisch die vorherrschende Sprache ist, können alle englischsprachigen Inhalte in einer PET-Inhaltsgruppe zwischengespeichert werden. Dadurch wird sichergestellt, dass jede Anfrage an den Original-Server geht, um die Sprache für die Antwort zu bestimmen. Wenn die Antwort englisch ist und sich der Inhalt nicht geändert hat, kann der Original-Server eine 304 Not Modified für den Cache bereitstellen.
Das folgende Beispiel zeigt Befehle zum Zwischenspeichern englischer Antworten in einer PET-Inhaltsgruppe, zum Konfigurieren eines benannten Ausdrucks, der englische Antworten im Cache identifiziert, und zum Konfigurieren einer Richtlinie, die diese Inhaltsgruppe und den benannten Ausdruck verwendet. Fett wird zur Betonung verwendet:
add cache contentgroup EnglishLanguageGroup -pollEveryTime YES add expression containsENExpression –rule "http.res.header(\\"Content-Language\\").contains(\\"en\\")" add cache policy englishPolicy -rule containsENExpression -action CACHE -storeInGroup englishLanguageGroup bind cache policy englishPolicy -priority 100 -precedeDefRules NO
PET und Authentifizierung, Autorisierung und Prüfung
Outlook Web Access (OWA) ist ein gutes Beispiel für dynamisch generierte Inhalte, die von PET profitieren. Alle E-Mail-Antworten (*.EML-Objekte) haben einenETag
Validator, mit dem sie als PET-Antworten gespeichert werden können.
Jede Anfrage nach einer E-Mail-Antwort wird an den Original-Server weitergegeben, auch wenn die Antwort zwischengespeichert ist. Der Original-Server bestimmt, ob der Anforderer authentifiziert und autorisiert ist. Es überprüft auch, ob die Antwort im Original-Server vorhanden ist. Wenn alle Ergebnisse positiv sind, sendet der Ursprungsserver eine 304 Not Modified Antwort.
In diesem Artikel
- Abweichung des Cache-Verhaltens von den Standards
- Cookies aus einer Antwort entfernen
- 静脉fügen von HTTP-Headern zur Reaktionszeit
- Fügen Sie einen Alter-, via- oder Tag-Header ein
- Fügen Sie einen Cache-Control-Header ein
- Ignoriere Cache-Kontrolle und Pragma-Header in Anfragen
- Poll-Original-Server jedes Mal, wenn eine Anfrage empfangen wird
- PET und kundenspezifische Inhalte
- PET und Authentifizierung, Autorisierung und Prüfung