Negatives Caching verwenden

Auf dieser Seite finden Sie eine Anleitung zur Verwendung von negativem Caching mit Cloud CDN. Beim negativen Caching können Sie für jeden Statuscode eine andere TTL festlegen.

Dies ermöglicht detaillierte Kontrolle über das Caching für häufige Fehler oder Weiterleitungen. So können Sie die Belastung am Ursprung verringern und durch die reduzierte Antwortlatenz die Abläufe für die Endnutzer verbessern.

Vorbereitung

  • 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
    

Statuscodes und Standard-TTLs

Negatives Caching gilt für bestimmte Statuscodes, die in der folgenden Tabelle aufgeführt sind.

Cloud CDN wendet die folgenden Standard-TTLs auf diese Statuscodes an:

Statuscode Bedeutung TTL
HTTP 300 Mehrfachauswahl 10 Minuten
HTTP 301 und 308 Dauerhafte Weiterleitungen 10 Minuten
HTTP 302 und 307 Temporäre Weiterleitungen Standardmäßig nicht im Cache gespeichert
HTTP 404 Nicht gefunden 120 Sekunden
HTTP 405 Methode nicht gefunden 60 Sekunden
HTTP 410 Nicht mehr vorhanden 120 Sekunden
HTTP 451 Aus rechtlichen Gründen nicht verfügbar 120 Sekunden
HTTP 501 Nicht implementiert 60 Sekunden

Sie können diese Standardwerte überschreiben, indem Sie mit negativem Caching eine Cache-TTL für den angegebenen HTTP-Statuscode festlegen.

Negatives Caching einrichten

Mit negativem Caching können Sie Ihren Dienst so konfigurieren, dass Fehler und Erfolge im Cache gespeichert werden. Dies ermöglicht es Cloud CDN, die Ursprünge von Anfragen abzuschirmen, die die Fehler (wie „404 Not Found“) generieren, auf die gleiche Weise abzuschirmen, wie es die Ursprünge von Anfragen abschirmt, die erfolgreiche Antworten generieren.

Console

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

    Zur Seite „Load-Balancing“

  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. Klicken Sie auf Negatives Caching aktivieren.
  8. Klicken Sie auf Negative Caching-Richtlinie hinzufügen.
    1. Geben Sie einen HTTP-Statuscode ein.
    2. Wählen Sie unter Cache-Gültigkeitsdauer (TTL) einen Wert aus.
  9. Klicken Sie auf Aktualisieren.
  10. 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 --negative-caching.

Verwenden Sie für Back-End-Dienste den Befehl gcloud compute backend-services create oder gcloud compute backend-services update mit dem Flag --negative-caching.

gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --negative-caching
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --negative-caching

Wenn Sie das negative Caching nur für zwei spezifische Fehlerantworten aktivieren möchten, können Sie beispielsweise festlegen, dass Antworten mit dem Statuscode 404 für 60 Sekunden im Cache gespeichert werden, und Antworten mit dem Statuscode 405 für 120 Sekunden.

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --negative-caching \
    --cache-mode=CACHE_ALL_STATIC \
    --default-ttl=86400 \
    --negative-caching-policy='404=60,405=120'

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": {
  "negativeCaching": ON,
  "negativeCachingPolicy": [
    {
      "code": STATUS_CODE,
      "ttl": TTL_SECONDS
    }
  ]
}

Für die Konfiguration der negativeCachingPolicy muss das negative Caching aktiviert sein. Wenn Sie die Richtlinie weglassen und negativeCaching aktivieren, verwendet Cloud CDN die unter Statuscodes und Standard-TTLs aufgeführten Standardwerte.

Wenn Sie eine Richtlinie für negatives Caching festlegen, müssen Sie eine Cache-TTL für alle Antwortcodes angeben, die Sie im Cache speichern möchten. Cloud CDN wendet keine Standardwerte für das negative Caching an, wenn eine Richtlinie vorhanden ist.

Für STATUS_CODE können Sie die folgenden HTTP-Statuscodes angeben:

  • 300: 301, 302, 307, 308
  • 404, 405, 410, 421, 451
  • 501

Für jeden Statuscode können Sie in Sekunden festlegen, wie lange die Antworten im Cache gespeichert werden sollen. Wenn Sie negatives Caching für den Statuscode deaktivieren möchten, schließen Sie den Code aus Ihrer Richtlinie für negatives Caching aus.

Der maximal zulässige Wert ist 1.800 Sekunden (30 Minuten). Vor der festgelegten TTL können nur selten aufgerufene Objekte aus dem Cache entfernt werden.

Wenn der Cache-Modus auf CACHE_ALL_STATIC oder USE_ORIGIN_HEADERS festgelegt ist, wird das negative Caching auf Antworten mit dem angegebenen Antwortcode angewendet, der beliebige Cache-Control- oder Expires-Header zurückgibt.

Wenn der Cache-Modus auf FORCE_CACHE_ALL eingestellt ist, hat negatives Caching Vorrang vor allen Caching-Headern, die vom Ursprung festgelegt wurden, und Cloud CDN wird die Antwort für die durch die TTL festgelegte Zeitspanne zwischenspeichern oder sie überhaupt nicht zwischenspeichern, wenn keine TTL festgelegt wurde.

Wenn der Cache-Modus auf FORCE_CACHE_ALL festgelegt ist, ändert Cloud CDN außerdem das an den Client im Header Cache-Control gesendete max-age. Wenn ein bestimmter Fehler eine konfigurierte TTL-Einstellung hat, verwendet Cloud CDN weniger als diese TTL-Einstellung und die Konfigurationseinstellung client_ttl und sendet einen Cache-Control: public,max-age=N-Header mit diesem Wert. Wenn ein bestimmter Fehler keine konfigurierte TTL-Einstellung hat, entfernt Cloud CDN alle vom Ursprung gesendeten Cache-Control-Header. Cloud CDN entfernt auch alle Expires-Header, die vom Ursprung gesendet wurden.

Wenn das negative Caching für einen Ursprung zuerst aktiviert und dann deaktiviert wurde (entweder manuell oder durch Deaktivierung des Cachings für einen bestimmten Antwortcode), werden im Cache gespeicherte Fehlerantworten nur anhand ihrer Cache-Control- oder Expires-Header als gültig betrachtet. Wenn das negative Caching deaktiviert ist, wird eine Antwort ohne Cache-Altersanweisungen in den Headern nicht aus dem Cache bereitgestellt.

Cloud CDN speichert im Cache als Reaktion auf GET-Anfragen. Weitere Informationen finden Sie unter Im Cache speicherbare Inhalte.

Jeder Cache-Eintrag wird durch einen Cache-Schlüssel identifiziert.

Negatives Caching deaktivieren

Console

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

    Zur Seite „Load-Balancing“

  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. Entfernen Sie das Häkchen neben Negatives Caching aktivieren.
  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 --no-negative-caching.

Verwenden Sie für Back-End-Dienste den Befehl gcloud compute backend-services create oder gcloud compute backend-services update mit dem Flag --no-negative-caching.

gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
    --no-negative-caching

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": {
  "negativeCaching": OFF
}