Ringkasan invalidasi cache

Halaman ini berisi ringkasan tentang invalidasi cache Cloud CDN.

Apa itu invalidasi cache?

Setelah di-cache, objek biasanya akan tetap berada dalam cache hingga masa berlakunya berakhir atau dikeluarkan untuk memberi ruang bagi konten baru. Anda mungkin ingin menghapus objek dari cache sebelum masa berlakunya habis. Anda dapat memaksa objek atau sekumpulan objek diabaikan oleh cache dengan meminta invalidasi cache.

Invalidasi cache, terkadang disebut penghapusan konten cache, adalah proses yang menyatakan konten yang di-cache tidak valid. Proses ini menyebabkan entri dihapus dari cache lalu diisi ulang dari server backend pada saat berikutnya konten tersebut diminta.

Cloud CDN mendukung penggunaan tag cache dan pencocok invalidasi, seperti jalur host dan URL, untuk permintaan invalidasi.

Anda dapat menggabungkan parameter invalidasi ini untuk menarget respons tertentu yang di-cache dan meminimalkan beban backend pada pengisian cache berikutnya.

Penting untuk memastikan bahwa server backend menampilkan konten yang benar sebelum Anda meminta invalidasi cache. Jika tidak, saat Cloud CDN meminta konten lagi, Cloud CDN mungkin akan meng-cache konten yang salah.

Kapasitas permintaan invalidasi dibatasi. Anda dapat mengirimkan hingga 500 permintaan invalidasi per menit. Tiap permintaan invalidasi berlaku dalam waktu sekitar 10 detik.

Cloud CDN tidak membatasi jumlah objek atau ukuran total semua objek yang diinvalidasi untuk tiap permintaan.

Invalidasi menurut URL

Tiap permintaan invalidasi menentukan pola jalur yang mengidentifikasi objek atau kumpulan objek yang harus diinvalidasi. Pola jalur dapat berupa jalur tertentu, seperti /cat.jpg, atau seluruh struktur direktori, seperti /pictures/*. Aturan berikut berlaku untuk pola jalur:

  • Pola jalur harus dimulai dengan /.
  • Tidak boleh menyertakan ? atau #.
  • Tidak boleh menyertakan * kecuali sebagai karakter terakhir setelah /.
  • Jika diakhiri dengan /*, string sebelumnya adalah awalan, dan semua objek yang jalurnya dimulai dengan awalan tersebut akan diinvalidasi.

Pola jalur dibandingkan dengan komponen jalur URL, yaitu semua yang ada di antara nama host dan ? atau # yang mungkin ada.

Jika Anda memiliki URL yang berisi string kueri, misalnya /images.php?image=fred.png, Anda tidak dapat menginvalidasi objek secara selektif yang hanya berbeda berdasarkan string kueri. Misalnya, jika Anda memiliki dua gambar, /images.php?image=fred.png dan /images.php?image=barney.png, Anda tidak dapat menginvalidasi hanya fred.png. Untuk menginvalidasi semua gambar yang disajikan oleh images.php, gunakan /images.php sebagai pola jalur.

Invalidasi untuk satu host

Invalidasi cache akan menginvalidasi jalur untuk semua nama host Anda. Misalnya, jika Anda memiliki example.com dan example2.com yang mengarah ke load balancer yang sama, dan Anda menginvalidasi /images/cat.jpg, maka example.com/images/cat.jpg dan example2.com/images/cat.jpg akan diinvalidasi.

Anda dapat membatasi invalidasi hanya ke salah satu host dengan menentukan host-nya.

Invalidasi menurut tag cache

Tag cache (atau kunci surrogate) dapat Anda gunakan untuk menginvalidasi konten berdasarkan metadata arbitrer.

Tag ini ditentukan dengan header HTTP Cache-Tag dalam respons backend. Tag cache dari backend di header respons HTTP Cache-Tag akan dikirim ke klien.

Tag cache memiliki batasan-batasan berikut:

  • Tidak boleh melebihi 120 byte per tag
  • Tidak boleh melebihi 4 KiB (4.096 byte) total nama tag per objek yang di-cache
  • Tidak boleh melebihi 50 tag per objek

Jika batas tag ini terlampaui, respons tidak akan di-cache dan keputusan ini akan di-log sebagai RESPONSE_CACHE_TAG_INVALID di LoadBalancerLogEntry.cacheDecision.

Anda dapat menentukan hingga 10 tag cache per permintaan invalidasi. Jika beberapa tag ditentukan dalam satu permintaan invalidasi, tag tersebut akan diperlakukan sebagai OR logis. Pertimbangkan contoh saat Anda memiliki objek yang di-cache berikut:

  • Objek yang di-cache #1 dengan tag js, 2020-12-23, dan prod
  • Objek yang di-cache #2 dengan tag css, 2020-11-30, dan prod
  • Objek yang di-cache #3 dengan tag img 2020-11-30, dan staging

Saat Anda mengirimkan permintaan untuk menginvalidasi objek yang cocok dengan tags="prod,2020-11-30", ketiga objek yang di-cache akan diinvalidasi. Dengan pendekatan ini, Anda tidak perlu mengetahui atau menentukan semua kemungkinan kombinasi tag saat ingin menginvalidasi objek.

Jika Anda menentukan pencocok invalidasi bersama dengan tag cache, permintaan invalidasi hanya akan berlaku untuk objek yang tagnya cocok dengan pencocok invalidasi. Pertimbangkan contoh dengan objek yang di-cache berikut:

  • Objek yang di-cache #1 dengan URL https://staging.example.com/img/cat.jpg dan tag a
  • Objek yang di-cache #2 dengan URL https://example.com/img/cat.jpg dan tag a
  • Objek yang di-cache #3 dengan URL https://staging.example.com/js/cat.js dan tag a
  • Objek yang di-cache #4 dengan URL https://staging.example.com/img/logo.jpg dan tag b

Saat Anda mengeluarkan permintaan invalidasi objek dengan host staging.example.com, jalur /img/*, dan tag a, hanya objek #1 yang akan diinvalidasi. Objek #2, #3, dan #4 tidak cocok dengan host, jalur, atau tag yang ditentukan.

Latensi invalidasi

Karena Cloud CDN adalah sistem terdistribusi, sistem ini mungkin akan melaporkan bahwa invalidasi telah selesai meskipun ada sejumlah kecil cache yang belum memproses permintaan invalidasi. Situasi ini jarang terjadi dan akan terkoreksi secara otomatis.

Praktik terbaik

Invalidasi hanya hal seperlunya karena menginvalidasi terlalu banyak dapat menyebabkan instance atau bucket Anda tiba-tiba terbebani dengan lonjakan permintaan yang dilayani cache.

Invalidasi dimaksudkan untuk digunakan dalam keadaan luar biasa, bukan sebagai bagian dari alur kerja normal Anda. Invalidasi tidak akan memengaruhi salinan dalam cache di cache browser web atau cache yang dioperasikan oleh internet service provider pihak ketiga.

Sebagai alternatif untuk invaidasi rutin, Anda dapat secara proaktif menetapkan waktu habis masa berlaku yang sesuai pada respons atau menggunakan URL yang berbeda untuk berbagai versi konten Anda. Untuk mengetahui informasi selengkapnya tentang waktu habis masa berlaku, baca bagian Waktu habis masa berlaku dan permintaan validasi.

Invalidasi dengan perujukan layanan lintas project VPC Bersama

Invalidasi cache dikonfigurasi di project frontend; yaitu, project yang memiliki aturan penerusan, proxy target, dan peta URL load balancer. Jadi, saat Anda menggunakan Load Balancer Aplikasi eksternal global dengan perujukan layanan lintas project VPC Bersama, secara default, administrator project layanan tidak memiliki izin yang diperlukan untuk meminta invalidasi cache.

Invalidasi cache hanya dapat dilakukan oleh principal yang memiliki peran Identity and Access Management (IAM) untuk mengonfigurasi resource load balancer di project frontend—misalnya, peran Compute Network Admin (roles/compute.networkAdmin).

Administrator layanan, yang mengontrol penyediaan layanan backend dalam project terpisah, dapat bekerja sama dengan administrator load balancer project frontend untuk mengeluarkan invalidasi cache bagi layanan lintas project mereka. Untuk penulisan ulang URL, pastikan invalidasi sesuai dengan host dan jalur sebelum penulisan ulang yang dikirim klien.

Langkah berikutnya