ADC

Konfigurieren von Cookies, Header und Polling

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 so, 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 =图像/ *)将永远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-weakPosRelExpiryund-weakNegResExpiryfü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 Cookiesentfernt die HeaderSet-Cookie and Set-Cookie2, bevor eine Antwort zwischenspeichert wird. Standardmäßig verhindert die OptionRemove Response Cookiesfür eine Content-Gruppe das Zwischenspeichern von Antworten mit den HeadernSet-CookieoderSet-Cookie2.

Hinweis:Wenn Bilder zwischengespeichert werden, besteht das integrierte Verhalten darin, die HeaderSet-CookieundSet-Cookie2vor dem Zwischenspeichern zu entfernen, unabhängig davon, wie die Content-Gruppe konfiguriert ist.

Citrix empfiehlt, dass Sie den StandardRemove Response Cookiesfür jede Content-Gruppe akzeptieren, die eingebettete Antworten speichert, z. B. Bilder.

Konfigurieren vonRemove Response Cookiesfür eine Content-Gruppe über die Befehlszeilenschnittstelle:

您一个der Eingabeaufforderung Folgendes静脉:

set cache contentgroup -removeCookies YES

Konfigurieren von Response-Cookies für eine Inhaltsgruppe mithilfe der Citrix ADC GUI

  1. Navigieren Sie zuOptimierung>Integriertes Caching>韩国仁荷ltsgruppen, und wählen Sie die Content-Gruppe aus.
  2. Wählen Sie auf der RegisterkarteAnderein der GruppeEinstellungendie Option Response-Cookies entfernen.

Einfügen von HTTP-Headern zur Reaktionszeit

Der integrierte Cache kann HTTP-Header in Antworten einfügen, die sich aus Cache-Anforderungen ergeben. Die Citrix ADC 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.

Überschrift 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 Citrix ADC 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 Citrix ADC 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 undTagHeadern, um festzustellen, ob eine Antwort veraltet ist. Der Cache fügt nur dann eineTagin eine Antwort ein, wenn er die Antwort zwischenspeichert und der Original-Server keinen eigenenTagHeader eingefügt hat. DerTagWert ist eine beliebige eindeutige Zahl. DerTagWert für eine Antwort ändert sich, wenn sie vom Original-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 vonTagHeader 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 einenTagHeader einfügt und den vom Ursprung bereitgestellten Cache-Control-Header ersetzt.
Cache-Steuerung Die Citrix ADC 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 Citrix ADC 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.
Überschrift 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 Citrix ADC 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 Citrix ADC-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 eineTagin eine Antwort ein, wenn er die Antwort zwischenspeichert und der Original-Server keinen eigenenTagHeader eingefügt hat. DerTagWert ist eine beliebige eindeutige Zahl. DerTagWert für eine Antwort ändert sich, wenn sie vom Original-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 vonTagHeader 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 einenTagHeader einfügt und den vom Ursprung bereitgestellten Cache-Control-Header ersetzt.
Cache-Steuerung Die Citrix ADC 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 Citrix ADC 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- undETagHeader eingefügt werden.

Fügen Sie mithilfe der Citrix ADC-Befehlsschnittstelle einen Age-, Via- oder ETAG-Headerein:

您一个der Eingabeaufforderung Folgendes静脉:

set cache contentgroup -insertVia YES -insertAge YES -insertETag YES

Konfigurieren Sie den Age-, Via- oder ETAG-Header mithilfe der Citrix ADC GUI

  1. Navigieren Sie zuOptimierung>Integriertes Caching>韩国仁荷ltsgruppen,und wählen Sie dieContent-Gruppeaus.
  2. Wählen Sie auf der RegisterkarteAnderein der Gruppe HTTP-Header-Einfügungen nach Bedarf die OptionenVia,AgeoderETagaus.
  3. Die Werte für die anderen Kopfzeilentypen werden automatisch berechnet. Den Via-Wert konfigurieren Sie in den Haupteinstellungen für den Cache.

    Konfigurieren von HTTP-Header-

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 Citrix ADC Befehlszeilenschnittstelle einen Cache-Control-Header ein

您一个der Eingabeaufforderung Folgendes静脉:

set cache contentgroup -cacheControl

Fügen Sie einen Cache-Control-Header mithilfe der Citrix ADC GUI ein

  1. Navigieren Sie zuOptimierung>Integriertes Caching>Content-Gruppenund
    1. Klicken Sie aufAblaufmethode, um die Heuristik und die standardmäßigen Ablaufeinstellungen zu löschen und den entsprechenden Wert im Textfeld Inhalt ablaufen nach festzulegen.
    2. 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

Ein 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 Citrix ADC Appliance, die Antwort vom Original-Server abzurufen, aber die zwischengespeicherte Antwort wird nicht aktualisiert. Wenn das Caching-Modul Cache-Control- und Pragma-Header 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.

Einstellung für Ignorieren-Cache-Control und Pragma-Header Einstellung 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 Eine 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

您一个der Eingabeaufforderung Folgendes静脉:

set cache contentgroup -ignoreReqCachingHdrs YES

So ignorieren Sie Anfragen zum Neuladen von Browsern mithilfe der Befehlszeilenschnittstelle

您一个der Eingabeaufforderung Folgendes静脉:

set cache contentgroup -ignoreReloadReq NO

Hinweis:Standardmäßig ist der Parameter -IgnoreReloadReq auf YES festgelegt.

Ignorieren Sie Cache-Control- und Pragma-Header in einer Anfrage mithilfe der GUI

  1. Navigieren Sie zuOptimierung>Integriertes Caching>韩国仁荷ltsgruppen, und wählen Sie die Content-Gruppe aus.
  2. Wählen Sie auf der RegisterkarteAnderein der GruppeEinstellungendie OptionCache-Control und Pragma-Header inAnfragenignorierenaus.

    Konfigurieren von Cache-Control- und Pragma-Headern

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 Citrix ADC 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 Citrix ADC 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.

aktualisi Nachdem一张PET-Antwort abgelaufen坚持ert die Citrix ADC 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.

Sie können PET für eine 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 Headern If-Modified-Since oder If-None-Match. Der Header “Wenn-Modifiziert-Since” enthält die Zeit aus dem Header “Letzte Änderung”. 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

您一个der Eingabeaufforderung Folgendes静脉:

add cache contentgroup -pollEveryTime YES

Umfrage mit der GUI

  1. Navigieren Sie zuOptimierung>Integriertes Caching>韩国仁荷ltsgruppen, und wählen Sie die Content-Gruppe aus.
  2. Wählen Sie auf der RegisterkarteAnderein der Gruppe Einstellungen die Option Jedes Mal abfragen (zwischengespeicherten Inhalt mit Ursprung für jede Anfrage überprüfen).

    Konfiguration der Inhaltsgruppen-Abfrage

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 

宠物和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 einenETagValidator, 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.