Diese Seite bietet Informationen zum Bereitstellen veralteter, abgelaufener Inhalte mit Cloud CDN. Durch Bereitstellung veralteter Inhalte kann der globale Cache von Google weiterhin Inhalte zur Verfügung stellen, wenn Ihr Ursprungsserver nicht erreichbar ist oder Fehler an Cloud CDN zurückgibt.
Dies ist in folgenden Fällen sinnvoll:
- Sie möchten, anstatt Fehlermeldungen an Nutzer zurückzugeben, veraltete Inhalte für die Nutzer bereitstellen.
- Durch die Bereitstellung veralteter Inhalte wird eine Latenz vermieden, wenn der Cache eine Anfrage für vor Kurzem abgelaufene Inhalte erhält. Sie müssen dann nicht auf eine synchrone nochmalige Validierung für das Backend warten, da der Cache die veralteten Inhalte bereitstellt, die gerade abgelaufen sind, während gleichzeitig eine separate Neuvalidierung ausgelöst wird.
Zur Aktivierung dieses Verhaltens kann das Backend die Anweisung stale-while-revalidate
im Antwort-Header Cache-Control
angeben. Cloud CDN stellt diese Inhalte dann (sofern verfügbar) aus dem Cache für die angegebene Anzahl von Sekunden nach dem Ablauf des Cache-Eintrags bereit. Cloud CDN validiert Inhalte asynchron mit dem Ursprung.
Cloud CDN aktiviert dies in Ihrem Namen mit der Einstellung cdnPolicy.serveWhileStale
. Diese Einstellung bestimmt, wie lange Cloud CDN nach Ablauf der Antwort weiter eine veraltete Version bereitstellen soll. Wenn in der Antwort nicht anders angegeben, ist dies 86400s
(1 Tag).
Cloud CDN unterstützt die Anweisung stale-if-error
nicht. Mit dieser Anweisung wird der Cache angewiesen, veraltete Inhalte zu vermeiden, es sei denn, die synchrone erneute Validierung mit dem Backend ist mit bestimmten Fehlerstatuscodes fehlgeschlagen.
Es gelten dafür folgende Standard-, Mindest- und Höchstwerte:
- Standardwert: 86.400 Sekunden (1 Tag)
- Mindestwert: 0 Sekunden (deaktiviert das Feature)
- Höchstwert: 604.800 Sekunden (1 Woche)
Veraltete Inhalte werden bis zu dem angegebenen Limit über den Ablaufzeitpunkt des Cache-Eintrags hinaus bereitgestellt, der durch die Header max-age
, s-maxage
oder Expires
definiert wird. Weitere Informationen finden Sie unter Ablaufzeiten und Validierungsanfragen.
Wenn es für ein Cloud CDN-Edge-Caching keine im Cache gespeicherte Kopie des Objekts gibt, das für das Bereitstellen veralteter Inhalte verwendet werden soll, oder wenn das Objekt die maximale TTL-Dauer für veraltete Inhalte erreicht hat, validiert Cloud CDN gleichzeitig den Inhalt gegenüber dem Ursprung neu. Wenn der Ursprung zu diesem Zeitpunkt einen Fehler meldet, gibt Cloud CDN einen Ursprungsfehler zurück.
Logging und User-Agent
Die asynchronen Anfragen von Cloud CDN werden Ihrem Ursprungsserver genau wie die normalen Anfragen zur erneuten Validierung angezeigt, die auftreten, wenn keine veralteten Inhalte bereitgestellt werden. Eine Ausnahme besteht darin, dass sie mit einem User-Agent
-Header gekennzeichnet sind, der Cloud-CDN-Google
enthält.
Asynchrone Anfragen werden auch separat in Cloud Logging protokolliert. So werden also von einer Nutzeranfrage, die veraltet ist, zwei Logeinträge erstellt: der erste für den Inhalt, der tatsächlich für den Nutzer bereitgestellt wurde, und der zweite für die Anfrage zur erneuten Validierung zum Ursprung. Wie bei synchronen Neuvalidierungen kann Cloud CDN in bestimmten Fällen eine bedingte Anfrage senden oder den Inhalt einfach bedingungslos noch einmal anfragen. In beiden Fällen entspricht der in Cloud Logging protokollierte Antwortcode der ursprünglichen Anfrage an Cloud CDN. Zum Beispiel ein 200 OK
für eine bedingungslose Anfrage oder ein 304 Not Modified
, wenn die ursprüngliche Antwort des Nutzers bedingt war.
Client-Anfrageanweisung max-stale
Clients können eine kürzere Servicezeit für veraltete Inhalte durch Angabe einer max-stale
-Cachesteuerungs-Anweisung anfordern. Ist diese Anweisung angegeben, steuert sie den Zeitraum für die veralteten Inhalte, die der Client toleriert.
Wenn die im Cache gespeicherten Inhalte älter sind, als der Wert des Clients für max-stale
, validiert Cloud CDN den Inhalt vor der Bereitstellung noch einmal.
Der Client kann keinen max-stale
-Wert anfordern, der größer ist als der Wert, der mit der Konfigurationsoption serve-while-stale
und der Cache-Steuerungsanweisung stale-while-revalidate
vom Ursprung festgelegt wurde.
Hinweis
Informieren Sie sich über Cache-Modi und statische Inhalte.
Achten Sie darauf, dass Cloud CDN aktiviert ist. Eine Anleitung hierzu finden Sie unter Cloud CDN verwenden.
Aktualisieren Sie bei Bedarf auf die neueste Version der Google Cloud CLI:
gcloud components update
Veraltete Inhalte bei nochmaliger Validierung bereitstellen
Console
- Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf den Namen Ihres externen Application Load Balancers.
- Klicken Sie auf Bearbeiten.
- Wählen Sie unter Back-End-Konfiguration ein Back-End aus und klicken Sie auf Bearbeiten.
- Achten Sie darauf, dass Cloud CDN aktivieren ausgewählt ist.
- Klicken Sie unten im Fenster auf Erweiterte Konfigurationen.
- Wählen Sie unter Zusätzliche CDN-Optionen eine der folgenden Optionen für Bereitstellen, obwohl veraltet aus:
- 1 Minute
- 5 Minuten
- 10 Minuten
- 30 Minuten
- 1 Tag (empfohlen)
- 7 Tage
- Klicken Sie auf Aktualisieren.
- Klicken Sie noch einmal auf Aktualisieren.
gcloud
Verwenden Sie für Back-End-Buckets den Befehl gcloud compute backend-buckets
create
oder gcloud compute backend-buckets
update
mit dem Flag --serve-while-stale
.
Verwenden Sie für Back-End-Dienste den Befehl gcloud compute backend-services
create
oder gcloud compute backend-services
update
mit dem Flag --serve-while-stale
.
gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME --serve-while-stale=SECONDS
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME --serve-while-stale=SECONDS
Beispiel:
gcloud compute backend-services update my-backend-service --serve-while-stale=180s
API
Verwenden Sie für Back-End-Buckets den API-Aufruf Method: backendBuckets.insert
oder Method: backendBuckets.update
.
Verwenden Sie für Back-End-Dienste den API-Aufruf Method: backendServices.insert
oder Method: backendServices.update
.
Verwenden Sie einen der folgenden API-Aufrufe:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
Fügen Sie dem JSON-Anfragetext folgendes Snippet hinzu:
"cdnPolicy": { "serveWhileStale": SECONDS }
Bereitstellung veralteter Inhalte deaktivieren
Console
- Rufen Sie in der Google Cloud Console die Seite Load-Balancing auf.
- Klicken Sie auf den Namen Ihres externen Application Load Balancers.
- Klicken Sie auf Bearbeiten.
- Wählen Sie unter Back-End-Konfiguration ein Back-End aus und klicken Sie auf Bearbeiten.
- Achten Sie darauf, dass Cloud CDN aktivieren nicht ausgewählt ist.
- Klicken Sie unten im Fenster auf Erweiterte Konfigurationen.
- Wählen Sie unter Zusätzliche CDN-Optionen > Bereitstellen, obwohl veraltet die Option „Bereitstellen, obwohl veraltet“ deaktivieren aus.
- Klicken Sie auf Aktualisieren.
- Klicken Sie noch einmal auf Aktualisieren.
gcloud
Verwenden Sie für Back-End-Buckets den Befehl gcloud compute backend-buckets
create
oder gcloud compute backend-buckets
update
mit dem Flag-Wert --serve-while-stale
, auf 0
festgelegt ist.
Verwenden Sie für Back-End-Dienste den Befehl gcloud compute backend-services
create
oder gcloud compute backend-services
update
, wobei das Flag --serve-while-stale
auf 0
gesetzt ist.
gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME) --serve-while-stale=0
API
Verwenden Sie für Back-End-Buckets den API-Aufruf Method: backendBuckets.insert
oder Method: backendBuckets.update
.
Verwenden Sie für Back-End-Dienste den API-Aufruf Method: backendServices.insert
oder Method: backendServices.update
.
Verwenden Sie einen der folgenden API-Aufrufe:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
Fügen Sie dem JSON-Anfragetext folgendes Snippet hinzu:
"cdnPolicy": { "serveWhileStale": 0 }