View a markdown version of this page

Membatalkan konten dengan tag cache - Amazon CloudFront

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Membatalkan konten dengan tag cache

Amazon CloudFront mendukung pembatalan tag, yang memungkinkan Anda membatalkan objek yang di-cache berdasarkan tag semantik, bukan jalur URL. Ini memberi Anda kontrol fleksibel atas pembatalan cache tanpa memerlukan struktur URL Anda agar sesuai dengan strategi pembatalan Anda.

Cara kerja pembatalan tag

  1. Konfigurasikan distribusi Anda: Tambahkan a CacheTagConfig ke distribusi Anda dengan menentukan nama header HTTP yang digunakan asal Anda untuk mengembalikan tag cache.

  2. Tandai objek di asal Anda: Saat mengembalikan objek yang ingin Anda cache dengan tag, konfigurasikan asal Anda untuk menyertakan header yang ditentukan dalam respons HTTP dengan nilai tag yang dipisahkan koma.

    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
    catatan

    Untuk asal S3, Anda dapat melampirkan tag cache ke objek S3 Anda sebagai metadata. Anda dapat menambahkan entri metadata dengan kunci pilihan Anda (contoh: cache-tag) dan daftar tag yang dipisahkan koma sebagai nilai (contoh:). product:electronics, category:tv, brand:example

    S3 memunculkan metadata objek sebagai header respons yang diawali x-amz-meta-<Key>, sehingga kunci metadata akan dikembalikan sebagai header. cache-tag x-amz-meta-cache-tag Anda dapat mengatur ke HeaderName dalam CacheTagConfig x-amz-meta-cache-tag untuk mengaktifkan pengiriman invalidasi ke tag ini.

    catatan

    Atau, Anda dapat melampirkan respons asal fungsi Lambda @Edge ke perilaku cache Anda untuk menambahkan header tag cache. Jika menggunakan Lambda @Edge, nama header tidak perlu mengikuti format. x-amz-meta-<Key>

  3. Membatalkan menurut tag: Gunakan CreateInvalidation API dengan # awalan untuk membatalkan semua objek yang di-cache dengan tag yang ditentukan.

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

    Ini membatalkan SEMUA objek cache yang berisi tag product:electronics, terlepas dari jalur URL-nya.

Persyaratan format tag

Nilai header respons asal:

  • Tag dipisahkan koma dalam nilai header.

  • Ruang depan dan belakang di sekitar setiap tag dipangkas.

  • tag1, tag2, tag3Keduanya tag1,tag2,tag3 valid dan setara.

Nilai tag individu:

  • Karakter terlihat ASCII (33—126)

  • Tidak ada karakter kontrol, spasi, atau koma

  • Tidak peka huruf besar/kecil

  • Maksimum 256 karakter per tag

  • Maksimal 50 tag per objek (tag tambahan diabaikan)

Mengkonfigurasi distribusi untuk pembatalan tag

Untuk mengaktifkan pembatalan tag, tambahkan CacheTagConfig ke konfigurasi distribusi Anda:

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" }'

Membuat pembatalan tag

Gunakan # awalan dalam --paths parameter untuk menentukan tag:

# 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"

Memeriksa status pembatalan

Gunakan GetInvalidation untuk memeriksa status. Respons mencakup item path dan tag:

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

Pertimbangan penting

  • Diperlukan keikutsertaan: Pembatalan tag hanya berfungsi pada distribusi yang telah dikonfigurasi. CacheTagConfig Distribusi tanpa konfigurasi ini mengabaikan header tag cache dari asal.

  • Batas pemrosesan tag: CloudFront memproses hingga 50 tag per objek yang di-cache. Jika respons asal berisi lebih dari 50 tag, tag tambahan di luar batas tidak disimpan.

  • Mengubah nama header: Pembatalan tag dicari terhadap konfigurasi saat ini. CacheTagConfig Jika Anda mengubah HeaderName dalamCacheTagConfig, pembatalan yang dikeluarkan untuk objek yang di-cache dengan tag di bawah nama header lama tidak akan lagi dievaluasi. Jika Anda perlu mengubah nama header, mulailah mengembalikan header tag cache baru dan lama dengan objek Anda, lalu keluarkan pembatalan jalur (misalnya,/*) atau batalkan tag yang ada sebelum mengubah nama header untuk menghindari penyajian konten basi. Setelah selesai, Anda dapat berhenti mengirim header tag cache lama dengan objek Anda.

  • Menghapus CacheTagConfig: Saat Anda menghapus CacheTagConfig dari distribusi, CloudFront berhenti mengekstrak tag dari respons asal. Objek cache yang ada dengan tag disajikan secara normal sampai kedaluwarsa atau tidak valid oleh jalur.

  • Kompatibilitas mundur: Pembatalan jalur dan wildcard yang ada terus berfungsi tidak berubah. Pembatalan tag bersifat aditif — Anda dapat menggunakan kedua metode pada distribusi yang sama.

  • Penyewa distribusi: Pembatalan tag juga didukung untuk penyewa distribusi melalui API. CreateInvalidationForDistributionTenant

Contoh kasus penggunaan

Contoh 1: Katalog produk e-Commerce

Situs e-commerce menandai halaman produk yang di-cache dengan produk, kategori, dan merek:

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

Saat ACME memperbarui branding mereka, batalkan semua produk ACME sekaligus:

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

Contoh 2: Platform konten buatan pengguna

Platform menandai konten yang di-cache dengan ID pengguna pemilik:

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

Saat pengguna menutup akun mereka, batalkan semua kontennya setelah Anda menghapusnya dari asal:

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

Contoh 3: Pembuatan versi konten

Sebuah konten tag CMS dengan pengidentifikasi versi:

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

Saat menerapkan versi baru, batalkan semua konten v2:

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