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 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-Leerung 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 nach dem Inhalt wird dieser vom Backend-Server geladen und neu in den Cache geschrieben.

Cloud CDN unterstützt die Verwendung von Cache-Tags und Entwertungs-Matchern wie Host und URL-Pfad für Entwertungsanfragen.

Sie können diese Entwertungsparameter kombinieren, um auf bestimmte im Cache gespeicherte Antworten abzuzielen und die Backendlast 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.

Für Entwertungsanfragen gilt eine Ratenbegrenzung. Sie können bis zu 500 Entwertungsanfragen pro Minute einreichen. Jede Entwertungsanfrage wird nach etwa 10 Sekunden wirksam.

Cloud CDN schränkt weder die Anzahl der Objekte noch die Gesamtgröße aller entwerteten Objekte für eine Anfrage ein.

Entwertung anhand von 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 den Host angeben.

Entwertung anhand von Cache-Tags

Mit Cache-Tags (oder Ersatzschlüsseln) können Sie Inhalte basierend auf beliebigen Metadaten entwerten.

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

Für Cache-Tags gelten die folgenden Limits:

  • Ein Tag darf nicht mehr als 120 Byte umfassen.
  • Die Gesamtlänge aller Tag-Namen pro im Cache gespeichertes Objekt darf 4 KiB (4.096 Byte) nicht überschreiten.
  • Es dürfen nicht mehr als 50 Tags pro Objekt vorhanden sein.

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 bis zu 10 Cache-Tags pro Entwertungsanfrage angeben. Wenn in einer einzelnen Entwertungsanfrage mehrere Tags angegeben werden, werden sie als logisches OR behandelt. Angenommen, Sie haben die folgenden im Cache gespeicherten Objekte:

  • 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 stellen, die mit tags="prod,2020-11-30" übereinstimmen, werden alle drei im Cache gespeicherten Objekte entwertet. Bei diesem Ansatz müssen Sie nicht alle möglichen Tag-Kombinationen kennen oder angeben, wenn Sie ein Objekt entwerten möchten.

Wenn Sie zusammen mit Cache-Tags Entwertungs-Matcher angeben, gilt die Entwertungsanfrage nur für die getaggten Objekte, die mit den Entwertungs-Matchern übereinstimmen. Betrachten Sie 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
  • Im Cache gespeichertes 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 mit dem Host staging.example.com, dem Pfad /img/* und dem Tag a senden, wird nur Objekt 1 entwertet. Die Objekte 2, 3 und 4 stimmen nicht mit dem Host, dem Pfad bzw. dem Tag überein.

Entwertungslatenz

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.

Entwertung mit projektübergreifender Dienstreferenz in der gemeinsam genutzten VPC

Die Cache-Entwertung wird im Frontend-Projekt konfiguriert, also im Projekt mit der Weiterleitungsregel, dem Zielproxy und dem URL-Mapping des Load Balancers. Wenn Sie einen globalen externen Application Load Balancer mit projektübergreifender Dienstreferenz in der gemeinsam genutzten VPC verwenden, haben Dienstprojektadministratoren standardmäßig nicht die erforderlichen Berechtigungen, um Cache-Entwertungen anfordern zu können.

Cache-Entwertungen können nur von Hauptkonten ausgegeben werden, die die nötigen 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-Umschreibungen darauf, dass die Entwertung mit dem Host und Pfad vor der Umschreibung ü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.