Veraltete Inhalte bereitstellen

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 erneute 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 im Antwort-Header Cache-Control die Anweisung stale-while-revalidate 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 neu beim 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 kann. Wenn in der Antwort nicht anders angegeben, gilt hierfür 86400s (1 Tag).

Cloud CDN unterstützt nicht die Anweisung stale-if-error. Mit dieser Anweisung wird der Cache angewiesen, veraltete Inhalte zu vermeiden, es sei denn, die synchrone erneute Validierung beim Backend ist mit bestimmten Fehlerstatuscodes fehlgeschlagen.

Dafür gelten 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 zum angegebenen Limit über den Ablaufzeitpunkt des Cache-Eintrags hinaus bereitgestellt, der durch den Header max-age, s-maxage oder Expires definiert wird. Weitere Informationen finden Sie unter Ablaufzeiten und Validierungsanfragen.

Wenn es in einem Cloud CDN-Edge-Cache keine veraltete Kopie des Objekts gibt oder wenn das Objekt die maximale TTL-Dauer für veraltete Inhalte erreicht hat, validiert Cloud CDN den Inhalt synchron beim 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 erscheinen für den Ursprungsserver genau wie normale Anfragen zur erneuten Validierung, 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 außerdem separat in Cloud Logging protokolliert. Daher werden bei 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 beim 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 200 OK für eine bedingungslose Anfrage oder 304 Not Modified, wenn die ursprüngliche Antwort des Nutzers bedingt war.

max-stale-Anfrageanweisung vom Client

Clients können eine kürzere Bereitstellungszeit für veraltete Inhalte durch Angabe einer max-stale-Cachesteuerungsanweisung anfordern. Ist diese Anweisung angegeben, steuert sie, wie lange Inhalte veraltet sein dürfen, damit der Client sie noch akzeptiert.

Wenn die im Cache gespeicherten Inhalte älter sind, als der max-stale-Wert des Clients angibt, validiert Cloud CDN den Inhalt vor der Bereitstellung neu.

Der Client kann keinen max-stale-Wert anfordern, der größer ist als der Wert, der mit der Konfigurationsoption serve-while-stale und der Cachesteuerungsanweisung 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 aktuelle Version der Google Cloud CLI:

    gcloud components update
    

Veraltete Inhalte während erneuter Validierung bereitstellen

Console

  1. Rufen Sie in der Console von Google Cloud die Seite Load Balancing auf.

    Zu „Load Balancing“

  2. Klicken Sie auf den Namen Ihres externen Application Load Balancers.
  3. Klicken Sie auf Bearbeiten.
  4. Wählen Sie unter Backend-Konfiguration ein Backend aus und klicken Sie auf Bearbeiten .
  5. Achten Sie darauf, dass Cloud CDN aktivieren ausgewählt ist.
  6. Klicken Sie unten im Fenster auf Erweiterte Konfigurationen.
  7. Wählen Sie für 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
  8. Klicken Sie auf Aktualisieren.
  9. Klicken Sie noch einmal auf Aktualisieren.

gcloud

Verwenden Sie für Backend-Buckets den Befehl gcloud compute backend-buckets create oder gcloud compute backend-buckets update mit dem Flag --serve-while-stale.

Verwenden Sie für Backend-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 Backend-Buckets den API-Aufruf Method: backendBuckets.insert oder Method: backendBuckets.update.

Verwenden Sie für Backend-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

  1. Rufen Sie in der Console von Google Cloud die Seite Load Balancing auf.

    Zu „Load Balancing“

  2. Klicken Sie auf den Namen Ihres externen Application Load Balancers.
  3. Klicken Sie auf Bearbeiten.
  4. Wählen Sie unter Backend-Konfiguration ein Backend aus und klicken Sie auf Bearbeiten .
  5. Achten Sie darauf, dass Cloud CDN aktivieren nicht ausgewählt ist.
  6. Klicken Sie unten im Fenster auf Erweiterte Konfigurationen.
  7. Wählen Sie unter Zusätzliche CDN-Optionen > Bereitstellen, obwohl veraltet die Option „Bereitstellen, obwohl veraltet“ deaktivieren aus.
  8. Klicken Sie auf Aktualisieren.
  9. Klicken Sie noch einmal auf Aktualisieren.

gcloud

Verwenden Sie für Backend-Buckets den Befehl gcloud compute backend-buckets create oder gcloud compute backend-buckets update, wobei das Flag --serve-while-stale auf 0 gesetzt ist.

Verwenden Sie für Backend-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 Backend-Buckets den API-Aufruf Method: backendBuckets.insert oder Method: backendBuckets.update.

Verwenden Sie für Backend-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
}