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
- 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.
- Klicken Sie auf Negatives Caching aktivieren.
- Klicken Sie auf Negative Caching-Richtlinie hinzufügen.
- Geben Sie einen HTTP-Statuscode ein.
- Wählen Sie unter Cache-Gültigkeitsdauer (TTL) einen Wert 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 --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
- 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.
- Entfernen Sie das Häkchen neben Negatives Caching aktivieren.
- 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 --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 }