Verwalten der Dauer, die Inhalte im Cache bleiben (Ablauf) - Amazon CloudFront

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwalten der Dauer, die Inhalte im Cache bleiben (Ablauf)

Sie können steuern, wie lange Ihre Dateien in einem CloudFront-Cache zwischengespeichert werden, bevor CloudFront eine weitere Anforderung an Ihren Ursprung weiterleitet. Eine Reduzierung der Dauer ermöglicht Ihnen, dynamische Inhalte bereitzustellen. Eine Erhöhung der Dauer bedeutet, dass Ihre Benutzer eine bessere Leistung erhalten, da es wahrscheinlicher ist, dass Ihre Dateien direkt vom Edge-Cache bereitgestellt werden. Eine längere Dauer verringert darüber hinaus die Last auf Ihrem Ursprung.

In der Regel stellt CloudFront eine Datei von einem Edge-Standort bereit, bis die festgelegte Cache-Dauer vergangen ist – d. h. bis die Datei abläuft. Wenn der Edge-Standort nach dem Ablauf eine Anfrage für die Datei erhält, leitet CloudFront die Anfrage an den Ursprung weiter, um sicherzustellen, dass der Cache die neueste Version der Datei enthält. Die Antwort vom Ursprung hängt davon ab, ob die Datei geändert wurde:

  • Wenn der CloudFront-Cache bereits über die neueste Version verfügt, gibt der Ursprung den Statuscode zurüc 304 Not Modified.

  • Wenn der CloudFront-Cache nicht über die neueste Version verfügt, gibt der Ursprung den Statuscode 200 OK und die neueste Version der Datei zurück.

Wenn eine Datei an einem Edge-Standort nicht häufig angefordert wird, beseitigt CloudFront die Datei möglicherweise, d. h. entfernt die Datei vor dem Ablaufdatum, um Platz für häufiger angeforderte Dateien zu schaffen.

Wir empfehlen, die Cache-Dauer zu verwalten, indem Sie die Cache-Richtlinie Ihrer Distribution aktualisieren. Wenn Sie keine Cache-Richtlinie verwenden, beträgt die Standard-TTL (Time to Live) 24 Stunden. Sie können jedoch die folgenden Einstellungen aktualisieren, um die Standardeinstellung zu überschreiben:

  • Um die Cache-Dauer für alle Dateien mit demselben Pfadmuster zu ändern, können Sie die CloudFront-Einstellungen für Mindest-TTL, Höchst-TTL und Standard-TTL für ein Cache-Verhalten ändern. Weitere Informationen zu den einzelnen Einstellungen finden Sie unter Mindest-TTL, Höchst-TTL und Standard-TTL.

  • Um die Cache-Dauer für eine einzelne Datei zu ändern, können Sie Ihren Ursprung so konfigurieren, dass ein Cache-Control-Header mit der max-age- oder s-maxage-Richtlinie oder ein Expires-Header zu der Datei hinzugefügt wird. Weitere Informationen finden Sie unter Verwenden von Headern zum Steuern der Cache-Dauer für einzelne Objekte.

Weitere Informationen dazu, wie Mindest-TTL, Standard-TTL und Höchst-TTL mit max-age- und s-maxage-Richtlinien und dem Expires-Header-Feld interagieren, finden Sie unter Angeben der Zeitspanne, die CloudFront Objekte zwischenspeichert.

Darüber hinaus können Sie steuern, wie lange Fehler (z. B. 404 Not Found) in einem CloudFront-Cache zwischengespeichert werden, bevor CloudFront erneut versucht, das angeforderte Objekt durch Weiterleiten einer weiteren Anforderung an Ihren Ursprung abzurufen. Weitere Informationen finden Sie unter Wie CloudFront werden die HTTP-Statuscodes 4xx und 5xx von Ihrem Ursprung verarbeitet.

Verwenden von Headern zum Steuern der Cache-Dauer für einzelne Objekte

Sie können die Header Cache-Control und Expires verwenden, um zu steuern, wie lange Objekte im Cache zwischengespeichert werden. Die Einstellungen für Mindest-TTL, Standard-TTL und Höchst-TTL wirken sich auch auf die Cache-Dauer aus. Im Folgenden finden Sie einen Überblick darüber, wie sich Header auf die Cache-Dauer auswirken können:

  • Mit der Cache-Control max-age-Richtlinie können Sie festlegen, wie lange (in Sekunden) ein Objekt im Cache zwischengespeichert werden soll, bevor CloudFront das Objekt erneut vom Ursprungs-Server abruft. Die minimale Ablaufzeit, die CloudFront unterstützt, beträgt 0 Sekunden. Die Höchstwert beträgt 100 Jahre. Geben Sie den Wert im folgenden Format an:

    Cache-Control: max-age=Sekunden

    Beispielsweise veranlasst die folgende Richtlinie, dass CloudFront das zugehörige Objekt für 3600 Sekunden (1 Stunde) im Cache behält:

    Cache-Control: max-age=3600

    Wenn Sie möchten, dass Objekte für unterschiedliche Zeiträume in CloudFront-Edge-Caches und in Browser-Caches zwischengespeichert werden, können Sie die Cache-Control max-age- und die Cache-Control s-maxage-Richtlinie zusammen verwenden. Weitere Informationen finden Sie unter Angeben der Zeitspanne, die CloudFront Objekte zwischenspeichert.

  • Im Expires-Header-Feld können Sie ein Ablaufdatum und eine Ablaufzeit festlegen. Verwenden Sie dafür das in RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1 Abschnitt 3.3.1, Full Date angegebene Format, zum Beispiel:

    Sat, 27 Jun 2015 23:59:59 GMT

Wir empfehlen, die Cache-Control max-age-Richtlinie anstelle des Expires-Header-Felds zum Steuern der Zwischenspeicherung von Objekten zu verwenden. Wenn Sie sowohl für Cache-Control max-age als auch für Expires Werte festlegen, verwendet CloudFront nur den Wert von Cache-Control max-age.

Weitere Informationen finden Sie unter Angeben der Zeitspanne, die CloudFront Objekte zwischenspeichert.

Sie können nicht die HTTP-Header-Felder Cache-Control oder Pragma in einer GET-Anforderung von einem Viewer verwenden, um zu erzwingen, dass CloudFront für das Objekt zum Ursprungs-Server zurückkehrt. CloudFront ignoriert diese Header-Felder in Viewer-Anforderungen.

Weitere Informationen zu den Header-Feldern Cache-Control und Expires finden Sie in den folgenden Abschnitt in RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1:

Bereitstellung veralteter (abgelaufener) Inhalte

CloudFront unterstützt die Cache-Kontrolldirektiven Stale-While-Revalidate und Stale-If-Error. Mit diesen Direktiven können Sie angeben, wie lange veraltete Inhalte für Viewer verfügbar sind.

Stale-While-Revalidate

Diese Direktive ermöglicht es CloudFront, veraltete Inhalte aus dem Cache bereitzustellen, während gleichzeitig asynchron eine neue Version vom Ursprung abgerufen wird. Dies verbessert die Latenz, da Viewer sofort Antworten von Edge-Standorten erhalten, ohne auf den Abruf im Hintergrund warten zu müssen. Neue Inhalte werden für zukünftige Anforderungen im Hintergrund geladen.

Beispiel: Stale-While-Revalidate

CloudFront geht wie folgt vor, wenn Sie den Cache-Control-Header so einrichten, dass er diese Direktiven verwendet.

Cache-Control: max-age=3600, stale-while-revalidate=600
  1. CloudFront speichert eine Antwort für eine Stunde (max-age=3600).

  2. Wenn nach diesem Zeitraum eine Anforderung gestellt wird, stellt CloudFront den veralteten Inhalt bereit und sendet gleichzeitig eine Anforderung an den Ursprung, um den zwischengespeicherten Inhalt erneut zu validieren und zu aktualisieren.

  3. Während der Inhalt erneut validiert wird, stellt CloudFront den veralteten Inhalt bis zu 10 Minuten lang (stale-while-revalidate=600) bereit.

Anmerkung

CloudFront stellt den veralteten Inhalt bis zum Wert der Direktive stale-while-revalidate oder dem Wert der CloudFront-Höchst-TTL zur Verfügung, je nachdem, welcher Wert niedriger ist. Nach Ablauf der maximalen TTL-Dauer ist das veraltete Objekt unabhängig vom Wert stale-while-revalidate nicht mehr im Edge-Cache verfügbar.

Stale-If-Error

Diese Direktive ermöglicht es CloudFront, veraltete Inhalte aus dem Cache bereitzustellen, wenn der Ursprung nicht erreichbar ist oder einen Fehlercode zwischen 500 und 600 zurückgibt. Dadurch wird sichergestellt, dass Viewer auch während eines Ausfalls des Ursprungs auf Inhalte zugreifen können.

Beispiel: Stale-If-Error

CloudFront geht wie folgt vor, wenn Sie den Cache-Control-Header so einrichten, dass er diese Direktiven verwendet.

Cache-Control: max-age=3600, stale-if-error=86400
  1. CloudFront speichert die Antwort für eine Stunde (max-age=3600) im Cache.

  2. Wenn der Ursprung ausgefallen ist oder nach diesem Zeitraum ein Fehler zurückgibt, stellt CloudFront den veralteten Inhalt bis zu 24 Stunden lang bereit (stale-if-error=86400).

  3. Wenn Sie benutzerdefinierte Fehlerantworten konfiguriert haben, versucht CloudFront, den veralteten Inhalt bereitzustellen, wenn innerhalb der angegebenen Dauer von stale-if-error ein Fehler auftritt. Wenn der veraltete Inhalt nicht verfügbar ist, stellt CloudFront die benutzerdefinierten Fehlerantworten bereit, die Sie für den entsprechenden Fehlerstatuscode konfiguriert haben. Weitere Informationen finden Sie unter Erstellen von benutzerdefinierten Fehlerantworten.

Hinweise
  • CloudFront stellt den veralteten Inhalt bis zum Wert der Direktive stale-if-error oder dem Wert der CloudFront-Höchst-TTL zur Verfügung, je nachdem, welcher Wert niedriger ist. Nach Ablauf der maximalen TTL-Dauer ist das veraltete Objekt unabhängig vom Wert stale-if-error nicht mehr im Edge-Cache verfügbar.

  • Wenn Sie stale-if-error nicht konfigurieren oder keine benutzerdefinierten Fehlerantworten festlegen, gibt CloudFront das veraltete Objekt zurück oder leitet die Fehlerantwort zurück an den Viewer, je nachdem, ob sich das angeforderte Objekt im Edge-Cache befindet oder nicht. Weitere Informationen finden Sie unter Wie CloudFront werden Fehler verarbeitet, wenn Sie keine benutzerdefinierten Fehlerseiten konfiguriert haben.

Verwenden beider Direktiven

stale-while-revalidate und stale-if-error sind unabhängige Cache-Kontrolldirektiven, die zusammen verwendet werden können, um die Latenz zu reduzieren und einen Puffer hinzuzufügen, damit Ihr Ursprung reagieren oder sich erholen kann.

Beispiel: Verwendung beider Direktiven

CloudFront geht wie folgt vor, wenn Sie den Cache-Control-Header so einrichten, dass er die folgenden Direktiven verwendet.

Cache-Control: max-age=3600, stale-while-revalidate=600, stale-if-error=86400
  1. CloudFront speichert die Antwort für eine Stunde (max-age=3600) im Cache.

  2. Wenn nach diesem Zeitraum eine Anforderung gestellt wird, stellt CloudFront den veralteten Inhalt bis zu 10 Minuten (stale-while-revalidate=600) bereit, während der Inhalt erneut überprüft wird.

  3. Wenn der Ursprungsserver einen Fehler zurückgibt, während CloudFront versucht, den Inhalt erneut zu validieren, stellt CloudFront den veralteten Inhalt bis zu 24 Stunden lang bereit (stale-if-error=86400).

Caching stellt ein Gleichgewicht zwischen Leistung und Aktualität her. Die Verwendung von Richtlinien wie stale-while-revalidate und stale-if-error kann die Leistung und den Benutzerkomfort verbessern. Achten Sie jedoch darauf, dass die Konfigurationen darauf abgestimmt sind, wie aktuell Ihre Inhalte sein sollen. Richtlinien für veraltete Inhalte eignen sich am besten für Anwendungsfälle, in denen Inhalte aktualisiert werden müssen, die neueste Version jedoch nicht unbedingt erforderlich ist. Wenn sich Ihr Inhalt nicht oder nur selten ändert, kann stale-while-revalidate außerdem zu unnötigen Netzwerkanforderungen führen. Erwägen Sie stattdessen, eine lange Cachedauer festzulegen.

Angeben der Zeitspanne, die CloudFront Objekte zwischenspeichert

Um die Zeit zu steuern, die CloudFront ein Objekt im Cache hält, bevor eine weitere Anfrage an den Ursprung gesendet wird, können Sie:

  • Die minimalen, maximalen und standardmäßigen TTL-Werte im Cache-Verhalten einer CloudFront-Verteilung festlegen. Sie können diese Werte in einer Cache-Richtlinie festlegen, die an das Cache-Verhalten (empfohlen) oder in den Legacy-Cache-Einstellungen angehängt ist.

  • Die Cache-Control- oder Expires-Header in Antworten vom Ursprung einschließen. Diese Header helfen auch zu bestimmen, wie lange ein Objekt in einem Browser-Cache zwischengespeichert wird, bevor eine weitere Anforderung an CloudFront gesendet wird.

In der folgenden Tabelle wird erläutert, wie die vom Ursprung gesendeten Cache-Control- und Expires-Header mit den TTL-Einstellungen in einem Cache-Verhalten zusammenarbeiten, um das Caching zu beeinflussen.

Urspung-Header Mindest-TTL = 0 Mindest-TTL > 0

Der Ursprung fügt dem Objekt eine Cache-Control: max-age-Richtlinie hinzu

CloudFront-Caching

CloudFront speichert das Objekt für den niedrigen der Werte der Cache-Control: max-age-Richtlinie und der CloudFront-Höchst-TTL zwischen.

Browser-Caching

Browser speichern das Objekt für den Wert der Cache-Control: max-age-Richtlinie zwischen.

CloudFront-Caching

Die CloudFront-Zwischenspeicherung ist abhängig von den Werten der CloudFront-Mindest- und -Höchst-TTL sowie der Cache-Control max-age-Richtlinie:

  • Wenn minimale TTL < max-age < maximale TTL, dann zwischenspeichert CloudFront das Objekt für den Wert der Cache-Control: max-age-Richtlinie.

  • Wenn max-age < minimale TTL, dann zwischenspeichert CloudFront das Objekt für den Wert der CloudFront-Mindest-TTL.

  • Wenn max-age > maximale TTL, dann zwischenspeichert CloudFront das Objekt für den Wert der maximalen TTL von CloudFront.

Browser-Caching

Browser speichern das Objekt für den Wert der Cache-Control: max-age-Richtlinie zwischen.

Der Ursprung fügt dem Objekt keine Cache-Control: max-age-Richtlinie hinzu

CloudFront-Caching

CloudFront speichert das Objekt für den Wert der CloudFront-Standard-TTL zwischen.

Browser-Caching

Abhängig vom Browser.

CloudFront-Caching

CloudFront speichert das Objekt für den höheren der Werte der CloudFront-Mindest-TTL und -Standard-TTL zwischen.

Browser-Caching

Abhängig vom Browser.

Der Ursprung fügt dem Objekt Cache-Control: max-age- und Cache-Control: s-maxage-Richtlinien hinzu

CloudFront-Caching

CloudFront speichert das Objekt für den niedrigen der Werte der Cache-Control: s-maxage-Richtlinie und der CloudFront-Höchst-TTL zwischen.

Browser-Caching

Browser speichern das Objekt für den Wert der Cache-Control max-age-Richtlinie zwischen.

CloudFront-Caching

Die CloudFront-Zwischenspeicherung ist abhängig von den Werten der CloudFront-Mindest- und -Höchst-TTL sowie der Cache-Control: s-maxage-Richtlinie:

  • Wenn minimale TTL < s-maxage < maximale TTL, dann zwischenspeichert CloudFront das Objekt für den Wert der Cache-Control: s-maxage-Richtlinie.

  • Wenn s-maxage < minimale TTL, dann zwischenspeichert CloudFront das Objekt für den Wert der CloudFront-Mindest-TTL.

  • Wenn s-maxage > maximale TTL, dann zwischenspeichert CloudFront das Objekt für den Wert der maximalen TTL von CloudFront.

Browser-Caching

Browser speichern das Objekt für den Wert der Cache-Control: max-age-Richtlinie zwischen.

Der Ursprung fügt dem Objekt einen Expires-Header hinzu

CloudFront-Caching

CloudFront speichert das Objekt bis zum Datum im Expires-Header oder für den Wert der CloudFront-Höchst-TTL zwischen, je nachdem, welcher Zeitpunkt früher eintritt.

Browser-Caching

Browser speichern das Objekt bis zum Datum im Expires-Header zwischen.

CloudFront-Caching

Die CloudFront-Zwischenspeicherung ist abhängig von den Werten der CloudFront-Mindest- und -Höchst-TTL sowie dem Expires-Header:

  • Wenn minimale TTL < Expires < maximale TTL, dann zwischenspeichert CloudFront das Objekt bis zum Datum und der Uhrzeit im Expires-Header.

  • Wenn Expires < minimale TTL, dann zwischenspeichert CloudFront das Objekt für den Wert der CloudFront-Mindest-TTL.

  • Wenn Expires > maximale TTL, dann zwischenspeichert CloudFront das Objekt für den Wert der maximalen TTL von CloudFront.

Browser-Caching

Browser speichern das Objekt bis zum Datum und der Uhrzeit im Expires-Header zwischen.

Der Ursprung fügt Objekten Cache-Control: no-cache-, no-store-, und/oder private-Richtlinien hinzu

CloudFront und Browser berücksichtigen die Header.

CloudFront-Caching

CloudFront speichert Objekte für den Wert der CloudFront-Mindest-TTL zwischen. Siehe die Warnung unter dieser Tabelle.

Browser-Caching

Browser berücksichtigen die Header.

Warnung
  • Wenn Ihre Mindest-TTL größer als 0 ist, verwendet CloudFront die Mindest-TTL der Cache-Richtlinie, auch wenn die Direktiven Cache-Control: no-cache, no-store und/oder private in den Ursprungsheadern vorhanden sind.

    • Wenn der Ursprung erreichbar ist, ruft CloudFront das Objekt vom Ursprung ab und gibt es an den Viewer zurück.

    • Wenn der Ursprung nicht erreichbar ist und die minimale oder maximale TTL größer als 0 ist, bedient CloudFront das Objekt, das es zuvor vom Ursprung erhalten hat.

    Um dieses Verhalten zu vermeiden, schließen Sie die Cache-Control: stale-if-error=0-Richtlinie in das vom Ursprung zurückgegebene Objekt ein. Dies führt dazu, dass CloudFront als Reaktion auf zukünftige Anfragen einen Fehler zurückgibt, wenn der Ursprung nicht erreichbar ist, anstatt das Objekt zurückzugeben, das es zuvor vom Ursprung erhalten hat.

  • CloudFront speichert den HTTP-Statuscode 501 („Nicht implementiert“) von einem S3-Ursprung nicht im Cache, wenn die Ursprungsheader die Direktiven Cache-Control: no-cache, no-store und/oder private enthalten. Dies ist das Standardverhalten für einen S3-Ursprung, auch wenn Ihre Einstellung für die Mindest-TTL größer als 0 ist.

Weitere Informationen zum Ändern von Einstellungen für Verteilungen mithilfe der CloudFront-Konsole finden Sie unter Eine Verteilung aktualisieren. Weitere Informationen zum Ändern von Einstellungen für Verteilungen mithilfe der CloudFront-API finden Sie unter UpdateDistribution.

Hinzufügen von Headern zu Ihren Objekten mithilfe der Amazon-S3-Konsole

Sie können das Header-Feld Cache-Control oder Expires zu Ihren Amazon-S3-Objekten hinzufügen. Ändern Sie dazu die Metadatenfelder für das Objekt.

So fügen Sie ein Cache-Control- oder Expires-Header-Feld zu Amazon-S3-Objekten hinzu
  1. Folgen Sie den Anleitungen im Abschnitt Ersetzen systemdefinierter Metadaten im Thema Bearbeiten von Objektmetadaten in der Amazon-S3-Konsole im Benutzerhandbuch für Amazon S3.

  2. Wählen Sie für Schlüssel den Namen des Headers aus, den Sie hinzufügen (Cache-Control oder Expires).

  3. Geben Sie für Wert einen Header-Wert ein. Zum Beispiel könnten Sie für einen Cache-Control-Header max-age=86400 eingeben. Für Expires könnten Sie ein Ablaufdatum und eine Uhrzeit wie Wed, 30 Jun 2021 09:28:00 GMT eingeben.

  4. Folgen Sie den restlichen Schritten, um Ihre Metadatenänderungen zu speichern.