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 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

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

    Load-Balancing aufrufen

  2. Klicken Sie auf den Namen Ihres externen Application Load Balancers.
  3. Klicken Sie auf Bearbeiten.
  4. Wählen Sie unter Back-End-Konfiguration ein Back-End 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 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
  8. Klicken Sie auf Aktualisieren.
  9. 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

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

    Load-Balancing aufrufen

  2. Klicken Sie auf den Namen Ihres externen Application Load Balancers.
  3. Klicken Sie auf Bearbeiten.
  4. Wählen Sie für Back-End-Konfiguration ein Back-End 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 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 den Befehl gcloud compute backend-services update wobei der Wert des Flags --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
}