View a markdown version of this page

Aufhebung der Gültigkeit durch Cache-Tags - Amazon CloudFront

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aufhebung der Gültigkeit durch Cache-Tags

Amazon CloudFront unterstützt Tag-Invalidierungen, sodass Sie zwischengespeicherte Objekte auf der Grundlage semantischer Tags und nicht anhand von URL-Pfaden für ungültig erklären können. Auf diese Weise können Sie die Cache-Invalidierung flexibel steuern, ohne dass Ihre URL-Struktur Ihrer Invalidierungsstrategie entsprechen muss.

Bevor Sie Inhalte anhand von Cache-Tags für ungültig erklären, lesen Sie die Anforderungen und Überlegungen unter. Was Sie zur Aufhebung der Gültigkeit von Tags wissen müssen

So funktioniert die Tag-Invalidierung

  1. Konfiguriere deine Distribution: Füge deiner Distribution eine CacheTagConfig hinzu, die den HTTP-Header-Namen angibt, den dein Ursprung für die Rückgabe von Cache-Tags verwendet.

  2. Markieren Sie Objekte an Ihrem Ursprung: Wenn Sie ein Objekt zurückgeben, das Sie mit Tags zwischenspeichern möchten, konfigurieren Sie Ihren Ursprung so, dass der angegebene Header in HTTP-Antworten mit kommagetrennten Tag-Werten enthalten ist.

    HTTP/1.1 200 OK Content-Type: text/html x-amz-meta-cache-tag: product:electronics, category:tv, brand:example Cache-Control: max-age=3600
    Anmerkung

    Für S3-Ursprünge können Sie Cache-Tags als Metadaten an Ihre S3-Objekte anhängen. Sie können einen Metadateneintrag mit einem Schlüssel Ihrer Wahl (Beispiel: cache-tag) und einer kommagetrennten Liste von Tags als Wert hinzufügen (Beispiel:product:electronics, category:tv, brand:example).

    S3 zeigt Objektmetadaten als Antwort-Header an, denen ein Präfix x-amz-meta-<Key> vorangestellt ist, sodass ein Metadatenschlüssel von als Header zurückgegeben cache-tag würde. x-amz-meta-cache-tag Sie können das HeaderName in your CacheTagConfig to setzen, x-amz-meta-cache-tag um das Senden von Ungültigerklärungen an diese Tags zu ermöglichen.

    Anmerkung

    Alternativ können Sie Ihrem Cache-Verhalten eine Lambda @Edge -Funktion der Ursprungsantwort hinzufügen, um Cache-Tag-Header hinzuzufügen. Wenn Sie Lambda @Edge verwenden, muss der Header-Name nicht dem Format folgen. x-amz-meta-<Key>

  3. Nach Tag ungültig machen: Verwenden Sie die CreateInvalidation API mit dem # Präfix, um alle Objekte, die mit dem angegebenen Tag zwischengespeichert wurden, für ungültig zu erklären.

    aws cloudfront create-invalidation \ --distribution-id distribution_ID \ --paths "#product:electronics"

    Dadurch werden ALLE zwischengespeicherten Objekte ungültig, die das Tag enthalten product:electronics, unabhängig von ihrem URL-Pfad.

Anforderungen an das Tag-Format

Header-Wert der Origin-Antwort:

  • Die Tags sind im Header-Wert durch Kommas getrennt.

  • Leerzeichen am Anfang und Ende der einzelnen Tags werden gekürzt.

  • Beide tag1,tag2,tag3 und tag1, tag2, tag3 sind gültig und gleichwertig.

Einzelne Tag-Werte:

  • Sichtbare ASCII-Zeichen (33—126)

  • Keine Steuerzeichen, Leerzeichen oder Kommas

  • Case-insensitive

  • Maximal 256 Zeichen pro Tag

  • Maximal 50 Tags pro Objekt (zusätzliche Tags werden ignoriert)

Konfiguration einer Verteilung für Tag-Invalidierungen

Um Tag-Invalidierungen zu aktivieren, fügen Sie Ihrer Distributionskonfiguration eine CacheTagConfig hinzu:

aws cloudfront create-distribution \ --distribution-config '{ "CallerReference": "my-distribution", "CacheTagConfig": { "HeaderName": "x-amz-meta-cache-tag" }, "DefaultCacheBehavior": { "TargetOriginId": "myOrigin", "ViewerProtocolPolicy": "redirect-to-https", "CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6" }, "Origins": { ... }, "Enabled": true, "Comment": "Distribution with tag support" }'

Tag-Invalidierungen erstellen

Verwenden Sie das # Präfix im --paths Parameter, um Tags anzugeben:

# Invalidate all objects tagged with "user1" aws cloudfront create-invalidation \ --distribution-id distribution_ID \ --paths "#user1" # Invalidate objects matching any of multiple tags (OR logic) aws cloudfront create-invalidation \ --distribution-id distribution_ID \ --paths "#user1" "#product-category:electronics" # Mix path and tag invalidations in one batch aws cloudfront create-invalidation \ --distribution-id distribution_ID \ --paths "/index.html" "#user1" "/images/*" "#product-category:electronics"

Überprüfung des Invalidierungsstatus

Wird verwendetGetInvalidation, um den Status zu überprüfen. Die Antwort umfasst sowohl Pfad- als auch Tag-Elemente:

aws cloudfront get-invalidation \ --distribution-id distribution_ID \ --id invalidation_ID

Wichtige Überlegungen

  • Opt-in erforderlich: Die Tag-Invalidierung funktioniert nur bei Distributionen, die konfiguriert wurdenCacheTagConfig. Distributionen ohne diese Konfiguration ignorieren Cache-Tag-Header aus dem Ursprung.

  • Grenzwerte für die Tag-Verarbeitung: CloudFront verarbeitet bis zu 50 Tags pro zwischengespeichertem Objekt. Wenn eine Quellantwort mehr als 50 Tags enthält, werden die zusätzlichen Tags, die das Limit überschreiten, nicht gespeichert.

  • Änderung des Headernamens: Tag-Invalidierungen werden anhand der aktuellen CacheTagConfig Konfiguration abgeglichen. Wenn Sie den HeaderName in ändernCacheTagConfig, werden Ungültigerklärungen für Objekte, die mit Tags unter dem alten Header-Namen zwischengespeichert wurden, nicht mehr ausgewertet. Wenn Sie den Header-Namen ändern müssen, beginnen Sie, sowohl die neuen als auch die alten Cache-Tag-Header zusammen mit Ihren Objekten zurückzugeben, und führen Sie dann eine Pfadinvalidierung durch (z. B./*) oder machen Sie vorhandene Tags ungültig, bevor Sie den Header-Namen ändern, um zu vermeiden, dass veraltete Inhalte bereitgestellt werden. Sobald das erledigt ist, können Sie das Senden der alten Cache-Tags-Header mit Ihren Objekten beenden.

  • Entfernen CacheTagConfig: Wenn Sie CacheTagConfig aus einer Distribution entfernen, wird das Extrahieren von Tags aus den ursprünglichen Antworten CloudFront beendet. Bestehende zwischengespeicherte Objekte mit Tags werden normal bereitgestellt, bis sie ablaufen oder anhand des Pfads für ungültig erklärt werden.

  • Abwärtskompatibilität: Bestehende Pfad- und Platzhalterinvalidierungen funktionieren weiterhin unverändert. Tag-Invalidierungen sind additiv — Sie können beide Methoden in derselben Distribution verwenden.

  • Distribution-Mandanten: Die Invalidierung von Tags wird mithilfe der API auch für Distributionsmandanten unterstützt. CreateInvalidationForDistributionTenant

Beispielanwendungsfälle

Beispiel 1: E-commerce Produktkatalog

Eine E-Commerce-Website kennzeichnet zwischengespeicherte Produktseiten mit Produkt, Kategorie und Marke:

x-amz-meta-cache-tag: category:electronics, brand:acme, product:12345

Wenn ACME ihr Branding aktualisiert, machen Sie alle ACME-Produkte gleichzeitig ungültig:

aws cloudfront create-invalidation \ --distribution-id distribution_ID \ --paths "#brand:acme"

Beispiel 2: Plattform für Inhalte User-generated

Eine Plattform kennzeichnet zwischengespeicherte Inhalte mit der Benutzer-ID des Eigentümers:

x-amz-meta-cache-tag: user:12345, content-type:image

Wenn ein Nutzer sein Konto schließt, mache seinen gesamten Inhalt ungültig, nachdem du ihn vom Ursprung entfernt hast:

aws cloudfront create-invalidation \ --distribution-id distribution_ID \ --paths "#user:12345"

Beispiel 3: Versionierung von Inhalten

Ein CMS kennzeichnet Inhalte mit Versions-Identifikatoren:

x-amz-meta-cache-tag: version:v2, template:homepage

Wenn Sie eine neue Version bereitstellen, machen Sie den gesamten v2-Inhalt ungültig:

aws cloudfront create-invalidation \ --distribution-id distribution_ID \ --paths "#version:v2"