Caching

Eine im Cache speicherbare Antwort ist eine HTTP-Antwort, die von Cloud CDN gespeichert und schnell abgerufen werden kann. Dies ermöglicht schnellere Ladezeiten. Nicht alle HTTP-Antworten können im Cache gespeichert werden.

Cache-Modi

Mit Cache-Modi können Sie die Faktoren steuern, die bestimmen, ob Cloud CDN Ihre Inhalte im Cache speichert.

Cloud CDN bietet drei Cache-Modi, mit denen definiert wird, wie Antworten im Cache gespeichert werden, ob Cloud CDN die vom Ursprung gesendeten Cache-Anweisungen berücksichtigt und wie Cache-TTLs angewendet werden.

Die verfügbaren Cache-Modi sind in der folgenden Tabelle aufgeführt:

Cache-Modus Verhalten
CACHE_ALL_STATIC Speichert erfolgreiche Antworten mit statischen Inhalten, die andernfalls nicht im Cache speicherbar sind, automatisch im Cache. Ursprungantworten, die gültige Caching-Anweisungen festlegen, werden ebenfalls im Cache gespeichert.

Dies ist das Standardverhalten für Cloud CDN-fähige Backends, die mit der Google Cloud CLI oder der REST API erstellt wurden.

USE_ORIGIN_HEADERS Erfordert Ursprungsantworten, um gültige Cache-Anweisungen und gültige Caching-Header festzulegen. Erfolgreiche Antworten ohne diese Anweisungen werden vom Ursprung weitergeleitet.
FORCE_CACHE_ALL Erfolgreiche Antworten werden bedingungslos gespeichert, wodurch die vom Ursprung festgelegten Cache-Anweisungen überschrieben werden. Dieser Modus ist nicht geeignet, wenn das Backend private, nutzerspezifische (mit einem Nutzer verknüpfte) Inhalte wie dynamische HTML- oder API-Antworten bereitstellt.

Fehlerantworten können im Cache gespeichert werden, auch wenn keine gültigen Cache-Anweisungen vorhanden sind.

Bevor Sie den Cache-Modus auf FORCE_CACHE_ALL setzen, sollten Sie Folgendes beachten:

  • Für signierte URLs oder signierte Cookies überschreibt FORCE_CACHE_ALL das Höchstalter, das in der Google Cloud Console über die Einstellung Höchstalter der Cache-Einträge oder die Option gcloud --signed-url-cache-max-age angegeben wurde.

  • FORCE_CACHE_ALL ändert die Gültigkeitsdauer (TTL) aller zuvor im Cache gespeicherten Inhalte. Diese Änderung kann dazu führen, dass einige Einträge, die zuvor als aktuell betrachtet wurden (da sie längere TTLs aus Ursprungsheadern haben), als veraltet gelten und einige Einträge, die zuvor als veraltet betrachtet wurden, als aktuell angesehen werden.

  • FORCE_CACHE_ALL überschreibt Cache-Anweisungen (Cache-Control und Expires), jedoch nicht die anderen Antwortheader. Insbesondere kann ein Vary-Header das Caching unterdrücken, auch wenn der Cache-Modus FORCE_CACHE_ALL ist. Weitere Informationen finden Sie unter Vary-Header.

Eine Anleitung zum Einrichten finden Sie unter Cache-Modus festlegen.

Statischer Inhalt

Statische Inhalte sind immer identisch, selbst wenn von unterschiedlichen Nutzern darauf zugegriffen wird. Die CSS, mit der Sie das Design Ihrer Website gestalten, sowie die JavaScript, um die Interaktivität sowie Video- und Bildinhalte bereitzustellen, ändern sich üblicherweise nicht für jeden Nutzer für eine bestimmte URL (Cache-Schlüssel) und daher lohnt es sich, dass diese an verschiedenen Orten im globalen Edge-Netzwerk von Cloud CDN gespeichert werden.

Wenn Sie den Cache-Modus auf CACHE_ALL_STATIC setzen und eine Antwort keine expliziten Caching-Anweisungen in Cache-Control- oder Expires-Headern hat, speichert Cloud CDN diese Antwort automatisch für Folgendes im Cache:

  • Web-Assets, einschließlich CSS (text/css), JavaScript (application/javascript) und alle Webschriftarten, einschließlich WOFF2 (font/woff2).
  • Bilder, einschließlich JPEG (image/jpg) und PNG (image/png).
  • Videos, einschließlich H.264, H.265 und MP4 (video/mp4)
  • Audiodateien, darunter MP3 (audio/mpeg) und MP4 (audio/mp4)
  • Formatierte Dokumente, einschließlich PDF (application/pdf).

Die folgende Tabelle enthält eine Zusammenfassung.

Kategorie MIME-Typen
Web-Assets text/css text/ecmascript text/javascript application/javascript
Schriftarten Alle Content-Type, die mit font/* übereinstimmen
Images Alle Content-Type, die mit image/* übereinstimmen
Videos Alle Content-Type, die mit video/* übereinstimmen
Ton Alle Content-Type, die mit audio/* übereinstimmen
Formatierte Dokumenttypen application/pdf und application/postscript

Cloud CDN prüft den HTTP-Antwortheader Content-Type, der den MIME-Typ des bereitgestellten Inhalts widerspiegelt.

Wichtige Hinweise:

  • Die Webserversoftware Ihres Ursprungs muss den Content-Type für jede Antwort festlegen. Viele Webserver legen automatisch den Header Content-Type fest, einschließlich NGINX, Varnish und Apache.

  • Cloud Storage legt den Content-Type-Header automatisch fest, wenn Sie die Google Cloud Console oder die Google Cloud CLI zum Hochladen von Inhalten verwenden.

  • Cloud Storage stellt Cloud CDN immer einen Cache-Control-Header zur Verfügung. Wenn kein Wert explizit ausgewählt wird, wird ein Standardwert gesendet. Daher werden alle erfolgreichen Cloud Storage-Antworten gemäß den Cloud Storage-Standardwerten im Cache gespeichert, sofern Sie die Cachesteuerungs-Metadaten für Objekte in Cloud Storage nicht explizit anpassen oder den FORCE_CACHE_ALL-Modus verwenden, um die von Cloud Storage gesendeten Werte zu überschreiben.

  • Wenn Sie die Inhaltstypen text/html und application/json im Cache speichern möchten, müssen Sie explizit Cache-Control-Header in der Antwort festlegen und dabei darauf achten, dass Sie nicht unbeabsichtigt die Daten eines Nutzers im Cache speichern und für alle Nutzer bereitstellen.

Wenn eine Antwort aufgrund ihres MIME-Typs cachefähig ist, aber einen Cache-Control-Antwortheader private oder no-store oder einen Set-Cookie-Header hat, wird sie nicht im Cache gespeichert. Weitere Informationen finden Sie unter Regeln für die Cachefähigkeit.

Andere Inhaltstypen wie HTML (text/html) und JSON (application/json) werden für erfolgreiche Antworten nicht standardmäßig im Cache gespeichert. Diese Antworttypen sind in der Regel dynamisch (nutzerbasiert). Beispiele sind die Daten von Einkaufswagen, Produktseiten mit Nutzerpersonalisierung und authentifizierte API-Antworten. Negatives Caching kann, sofern aktiviert, dazu führen, dass sie für bestimmte Statuscodes dennoch im Cache gespeichert werden.

Cloud CDN verwendet keine Dateiendungen im URL-Pfad, um zu bestimmen, ob eine Antwort im Cache gespeichert werden kann, da sich viele gültige, im Cache speicherbare Antworten nicht in URLs finden lassen.

Im Cache speicherbare Inhalte

Cloud CDN speichert Antworten im Cache, die alle Anforderungen in diesem Abschnitt erfüllen. Einige dieser Anforderungen sind in RFC 7234 spezifiziert, während andere Cloud CDN-spezifisch sind.

Cloud CDN kann den genauen Satz von Bedingungen, unter denen Inhalte im Cache gespeichert werden, regelmäßig ändern. Wenn Sie verhindern möchten, dass Cloud CDN Ihre Inhalte explizit im Cache speichert, befolgen Sie die Richtlinien in RFC 7234, um zu bestimmen, wie eine garantierte, nicht Cache-fähige Antwort angegeben wird. Weitere Informationen finden Sie im Abschnitt Nicht im Cache speicherbare Inhalte, die auf ursprünglichen Headern basieren.

Cloud CDN speichert Antworten im Cache, wenn alle folgenden Bedingungen erfüllt sind.

Attribut Anforderung
Bereitgestellt von Backend-Dienst, Backend-Bucket oder ein externes Backend mit aktiviertem Cloud CDN
Als Antwort auf GET-Anfrage
Statuscode

200, 203, 204, 206, 300, 301, 302, 307, 308, 404, 405, 410, 421, 451 oder 501.

Aktualität

Die Antwort hat einen Cache-Control-Header mit einer max-age- oder s-maxage-Anweisung oder einen Expires-Header mit einem Zeitstempel in der Zukunft.

Bei cachefähigen Antworten ohne Alter (z. B. mit no-cache) muss die Anweisung public explizit angegeben werden.

Wenn im Cache-Modus CACHE_ALL_STATIC keine Aktualitätsanweisungen vorhanden sind, kommt eine erfolgreiche Antwort mit statischem Inhaltstyp trotzdem für das Caching infrage.

Im Cache-Modus FORCE_CACHE_ALL kann jede erfolgreiche Antwort im Cache gespeichert werden. Dies kann dazu führen, dass private, personenbezogene Inhalte im Cache gespeichert werden. Sie sollten FORCE_CACHE_ALL nur für Backends festlegen, die keine privaten oder dynamischen Inhalte bereitstellen, beispielsweise Cloud Storage-Buckets.

Wenn negatives Caching aktiviert ist und der Statuscode mit einem übereinstimmt, für den das negative Caching eine TTL angibt, kann die Antwort im Cache gespeichert werden, auch wenn keine explizite Cache-Anweisung vorhanden ist.

Inhalt

Bei HTTP/1-Ursprüngen muss die Antwort einen gültigen Header Content-Length, Content-Range oder Transfer-Encoding: chunked enthalten.

Bei Ursprüngen, die neuere HTTP-Protokollversionen (HTTP/2 und höher) verwenden, muss die Antwort solche Header nicht enthalten.

Größe Kleiner oder gleich der maximalen Größe.

Bei Antworten mit Größen zwischen 10 MiB und 100 GiB finden Sie unter Bytebereichsanfragen zusätzliche Einschränkungen für die Cache-Fähigkeit.

Bei Cloud Storage-Backend-Buckets sollten Sie die folgenden zusätzlichen Empfehlungen beachten:

Wenn ein Objekt öffentlich ist und keine Cache-Control-Metadaten angegeben sind, weist Cloud Storage dem Objekt standardmäßig einen Cache-Control: public, max-age=3600-Header zu. Sie können verschiedene Werte mit