Cache-Entwertung

Diese Seite bietet einen Überblick über die Cache-Entwertung in Cloud CDN.

Was ist eine Cache-Entwertung?

Sobald ein Objekt im Cache gespeichert wurde, verbleibt es normalerweise im Cache, bis es abläuft oder gelöscht wird, um Platz für neue Inhalte zu schaffen. Unter Umständen möchten Sie ein Objekt vielleicht vor seiner normalen Ablaufzeit aus dem Cache entfernen. Sie können erzwingen, dass ein Objekt oder Objektsatz vom Cache ignoriert wird, indem Sie eine Cache-Entwertung beantragen.

Die Cache-Entwertung wird manchmal Cache-Löschen bezeichnet. Dabei werden im Cache gespeicherte Inhalte als ungültig deklariert. Dadurch wird der Eintrag aus dem Cache entfernt und bei der nächsten Anfrage vom Backend-Server wieder aufgefüllt.

Cloud CDN unterstützt die Verwendung von Cache-Tags (Vorabversion) und Entwertungsabgleichsmechanismen wie Host und URL-Pfad für Entwertungsanfragen.

Sie können diese Entwertungsparameter kombinieren, um bestimmte Antworten aus dem Cache zu erreichen und die Backend-Last beim anschließenden Füllen des Cache zu minimieren.

Es ist wichtig sicherzustellen, dass der Backend-Server die korrekten Inhalte zurückgibt, bevor Sie die Cache-Entwertung anfordern. Andernfalls wird möglicherweise der falsche Inhalt im Cache gespeichert, wenn Cloud CDN den Inhalt ein weiteres Mal anfordert.

Anfragen zur Datenentwertung sind auf folgende Weise ratenbegrenzt:

  • Für Cache-Tags (Vorabversion) können Sie bis zu 500 Entwertungsanfragen pro Minute senden. Jede Anfrage zur Invalidation tritt nach etwa 10 Sekunden in Kraft.
  • Bei anderen Abgleichsmechanismen für die Entwertung können Sie höchstens eine Entwertung pro Minute einreichen. Jede Anfrage zur Datenentwertung wird nach etwa einer bis drei Minuten wirksam.

Cloud CDN schränkt die Anzahl der Objekte oder die Gesamtgröße aller ungültigen Objekte für jede Anfrage nicht ein.

Ungültigkeit durch URLs

Jeder Antrag auf Entwertung umfasst ein Pfadmuster, das das Objekt oder den Objektsatz identifiziert, das bzw. der entwertet werden soll. Das Pfadmuster kann entweder ein bestimmter Pfad sein, z. B. /cat.jpg, oder eine gesamte Verzeichnisstruktur, z. B. /pictures/*. Für Pfadmuster gelten folgende Regeln:

  • Das Pfadmuster muss mit / beginnen.
  • Es darf weder ? noch # enthalten.
  • Es darf nicht das Zeichen * enthalten, außer als letztes Zeichen nach /.
  • Wenn es mit /* endet, ist der vorherige String ein Präfix und alle Objekte, deren Pfade mit diesem Präfix beginnen, werden entwertet.

Das Pfadmuster wird mit der Pfadkomponente der URL verglichen. Die Pfadkomponente besteht aus sämtlichen Zeichen zwischen dem Hostnamen und einem eventuell vorhandenen ? oder #.

Wenn Sie URLs haben, die einen Abfragestring wie /images.php?image=fred.png enthalten, können Sie Objekte, die sich nur durch den Abfragestring unterscheiden, nicht selektiv entwerten. Wenn Sie beispielsweise die zwei Bilder /images.php?image=fred.png und /images.php?image=barney.png haben, können Sie nicht nur fred.png entwerten. Verwenden Sie /images.php als Pfadmuster, um alle von "images.php" bereitgestellten Bilder zu entwerten.

Entwertung für einen einzelnen Host

Bei der Cache-Entwertung wird der Pfad für alle Ihre Hostnamen entwertet. Wenn beispielsweise example.com und example2.com auf denselben Load-Balancer verweisen und Sie /images/cat.jpg entwerten, werden sowohl example.com/images/cat.jpg als auch example2.com/images/cat.jpg entwertet.

Sie können die Entwertung auf nur einen der Hosts beschränken, indem Sie dem Befehl das Flag --host hinzufügen.

Cache-Entwertung durch Cache-Tags

Mit Cache-Tags (oder Surrogate Keys) können Sie Inhalte basierend auf beliebigen Metadaten ungültig machen.

Diese Tags werden in einer Back-End-Antwort mit dem Cache-Tag-HTTP-Header definiert. Cache-Tags aus dem Backend im Cache-Tag-HTTP-Antwortheader werden an den Client gesendet.

Für Cache-Tags gelten die folgenden Einschränkungen:

  • Darf 120 Byte pro Tag nicht überschreiten
  • Darf nicht mehr als 4 KiB (4.096 Byte) der gesamten Tag-Namen pro im Cache gespeichertem Objekt enthalten.
  • Darf nicht mehr als 50 Tags pro Objekt enthalten.

Wenn diese Tag-Limits überschritten werden, wird die Antwort nicht im Cache gespeichert und diese Entscheidung wird in LoadBalancerLogEntry.cacheDecision als RESPONSE_CACHE_TAG_INVALID protokolliert.

Sie können pro Anfrage zur Cache-Entwertung bis zu 10 Cache-Tags angeben. Wenn in einer einzelnen Anfrage zur Invalidation mehrere Tags angegeben werden, werden sie als logisches OR behandelt. Angenommen, Sie haben die folgenden Objekte im Cache:

  • Im Cache gespeichertes Objekt 1 mit den Tags js, 2020-12-23 und prod
  • Im Cache gespeichertes Objekt 2 mit den Tags css, 2020-11-30 und prod
  • Im Cache gespeichertes Objekt 3 mit den Tags img, 2020-11-30 und staging

Wenn Sie eine Anfrage zum Entwerten von Objekten senden, die mit tags="prod,2020-11-30" übereinstimmen, werden alle drei im Cache gespeicherten Objekte entwertet. Bei diesem Ansatz müssen Sie also nicht alle möglichen Tag-Kombinationen kennen oder angeben, wenn Sie ein Objekt ungültig machen möchten.

Wenn Sie Entwertungsabgleiche zusammen mit Cache-Tags angeben, gilt die Entwertungsanfrage nur für die getaggten Objekte, die mit den Entwertungsabgleichen übereinstimmen. Betrachten wir ein Beispiel mit den folgenden im Cache gespeicherten Objekten:

  • Im Cache gespeichertes Objekt 1 mit der URL https://staging.example.com/img/cat.jpg und dem Tag a
  • Gecachtes Objekt 2 mit der URL https://example.com/img/cat.jpg und dem Tag a
  • Im Cache gespeichertes Objekt 3 mit der URL https://staging.example.com/js/cat.js und dem Tag a
  • Im Cache gespeichertes Objekt 4 mit der URL https://staging.example.com/img/logo.jpg und dem Tag b

Wenn Sie eine Anfrage zum Entwerten von Objekten senden, die mit --host="staging.example.com" --path="/img/*" --tags="a" übereinstimmen, wird nur Objekt 1 entwertet. Die Objekte 2, 3 und 4 stimmen nicht mit dem Host, Pfad oder Tag überein.

Latenz der Datenentwertung

Da es sich bei Cloud CDN um ein dezentrales System handelt, kann die Meldung erscheinen, dass eine Entwertung abgeschlossen wurde, obwohl eine kleine Anzahl an Caches die Entwertungsanfrage noch nicht verarbeitet hat. Diese Situation ist extrem selten und wird automatisch korrigiert.

Best Practices

Führen Sie eine Entwertung möglichst nur dann durch, wenn sie auch notwendig ist, denn eine zu umfangreiche Entwertung kann bei Ihren Instanzen oder Buckets zu einer plötzlichen starken Zunahme von Anfragen führen, die zuvor aus den Caches bedient wurden.

Die Entwertung ist nur für außergewöhnliche Umstände vorgesehen und kein Bestandteil Ihres normalen Arbeitsablaufs. Entwertungen wirken sich nicht auf Kopien aus, die in Webbrowser-Caches oder in von Internet-Drittanbietern betriebenen Caches gespeichert sind.

Als Alternative zu routinemäßigen Entwertungen können Sie proaktiv passende Ablaufzeiten für Antworten festlegen oder verschiedene URLs für verschiedene Versionen Ihrer Inhalte verwenden. Weitere Informationen zu Ablaufzeiten finden Sie unter Ablaufzeiten und Validierungsanfragen.

Ungültig machen mit projektübergreifendem Dienstverweis in einer freigegebenen VPC

Die Cache-Entwertung wird im Frontend-Projekt konfiguriert, also dem Projekt mit der Weiterleitungsregel, dem Zielproxy und der URL-Zuordnung des Load Balancers. Wenn Sie also einen globalen externen Application Load Balancer mit projektübergreifender Dienstreferenz für die freigegebene VPC verwenden, haben Dienstprojektadministratoren standardmäßig nicht die erforderlichen Berechtigungen, Cache-Entwertungen anzufordern.

Cache-Entwertungen können nur von Hauptkonten ausgegeben werden, die IAM-Rollen (Identity and Access Management) zum Konfigurieren von Load Balancer-Ressourcen in den Frontend-Projekten haben, z. B. die Rolle „Compute-Netzwerkadministrator“ (roles/compute.networkAdmin).

Dienstadministratoren, die die Bereitstellung der Backend-Dienste in einem separaten Projekt steuern, können mit dem Load-Balancer-Administrator des Frontend-Projekts zusammenarbeiten, um die Cache-Entwertung für ihre projektübergreifenden Dienste auszuführen. Achten Sie bei URL-Weiterleitungen darauf, dass die Entwertung mit dem Host und Pfad vor der Weiterleitung übereinstimmt, die der Client sendet.

Nächste Schritte

  • Mehr zum Entwerten Ihrer im Cache gespeicherten Inhalte in Cloud CDN finden Sie unter Cache-Inhalte entwerten.

  • Mehr darüber, welche Inhalte im Cache gespeichert werden können und welche nicht, erfahren Sie unter Caching-Details.