Gunakan cache negatif

Halaman ini memberikan petunjuk untuk menggunakan caching negatif dengan Cloud CDN. Dengan caching negatif, Anda dapat menetapkan TTL yang berbeda untuk setiap kode status.

Alasan untuk melakukannya adalah untuk menerapkan kontrol mendetail atas penyimpanan cache untuk error atau pengalihan umum. Hal ini dapat mengurangi beban pada origin Anda dan meningkatkan pengalaman pengguna akhir dengan mengurangi latensi respons.

Sebelum memulai

  • Baca tentang mode cache dan konten statis.

  • Pastikan Cloud CDN diaktifkan; untuk mengetahui petunjuknya, lihat Menggunakan Cloud CDN.

  • Jika perlu, update Google Cloud CLI ke versi terbaru:

    gcloud components update
    

Kode status dan TTL default

Cache negatif berlaku untuk kode status tertentu, yang tercantum dalam tabel berikut.

Cloud CDN menerapkan TTL default berikut ke kode status ini:

Kode status Arti TTL
HTTP 300 Pilihan ganda 10 menit
HTTP 301 dan 308 Pengalihan permanen 10 menit
HTTP 302 dan 307 Pengalihan sementara Tidak di-cache secara default
HTTP 404 Tidak ditemukan 120 detik
HTTP 405 Metode tidak ditemukan 60 detik
HTTP 410 Gone 120 detik
HTTP 451 Tidak tersedia karena alasan hukum 120 detik
HTTP 501 Tidak diterapkan 60 detik

Anda dapat mengganti nilai default ini dengan menggunakan caching negatif untuk menetapkan TTL cache untuk kode status HTTP yang ditentukan.

Menyiapkan cache negatif

Dengan caching negatif, Anda dapat mengonfigurasi layanan untuk meng-cache kegagalan dan keberhasilan. Hal ini memungkinkan Cloud CDN melindungi asal dari permintaan yang menghasilkan error (seperti 404 Not Found) dengan cara yang sama seperti melindungi asal dari permintaan yang menghasilkan respons berhasil.

Konsol

  1. Di konsol Google Cloud, buka halaman Load Balancing.

    Buka halaman Load balancing

  2. Klik nama Load Balancer Aplikasi eksternal Anda.
  3. Klik Edit .
  4. Di Backend configuration, pilih backend, lalu klik Edit .
  5. Pastikan Enable Cloud CDN dipilih.
  6. Di bagian bawah jendela, klik Advanced configurations.
  7. Klik Aktifkan cache negatif.
  8. Klik Tambahkan kebijakan caching negatif.
    1. Masukkan kode status HTTP.
    2. Pilih Cache time to live (TTL).
  9. Klik Perbarui.
  10. Klik Perbarui lagi.

gcloud

Untuk bucket backend, gunakan perintah gcloud compute backend-buckets create atau perintah gcloud compute backend-buckets update dengan flag --negative-caching.

Untuk layanan backend, gunakan perintah gcloud compute backend-services create atau perintah gcloud compute backend-services update dengan flag --negative-caching.

gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --negative-caching
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --negative-caching

Untuk mengaktifkan caching negatif hanya untuk dua respons error tertentu, misalnya, setel respons dengan kode status 404 ke cache selama 60 detik, dan respons dengan kode status 405 akan disimpan dalam cache selama 120 detik.

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --negative-caching \
    --cache-mode=CACHE_ALL_STATIC \
    --default-ttl=86400 \
    --negative-caching-policy='404=60,405=120'

api

Untuk bucket backend, gunakan panggilan API Metode: backendBuckets.insert atau Metode: backendBuckets.update.

Untuk layanan backend, gunakan panggilan API Metode: backendServices.insert atau Metode: backendServices.update.

Gunakan salah satu panggilan API berikut:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

Tambahkan cuplikan berikut ke isi permintaan JSON:

"cdnPolicy": {
  "negativeCaching": ON,
  "negativeCachingPolicy": [
    {
      "code": STATUS_CODE,
      "ttl": TTL_SECONDS
    }
  ]
}

Cache negatif harus diaktifkan agar dapat mengonfigurasi setelan negativeCachingPolicy. Jika Anda menghapus kebijakan dan mengaktifkan negativeCaching, Cloud CDN akan menggunakan nilai default yang tercantum dalam Kode status dan TTL default.

Saat menentukan kebijakan caching negatif, pastikan untuk menentukan TTL cache untuk semua kode respons yang ingin Anda cache. Cloud CDN tidak menerapkan caching negatif default apa pun ketika kebijakan tersedia.

Untuk STATUS_CODE, Anda dapat menentukan kode status HTTP berikut:

  • 300, 301, 302, 307, 308
  • 404, 405, 410, 421, 451
  • 501

Untuk setiap kode status, Anda dapat menentukan jumlah detik untuk meng-cache respons. Guna menonaktifkan caching negatif untuk kode status, kecualikan kode dari kebijakan caching negatif Anda.

Nilai maksimum yang diizinkan adalah 1.800 detik (30 menit); namun, objek yang jarang diakses dapat dikeluarkan dari cache sebelum TTL yang ditentukan.

Jika mode cache disetel ke CACHE_ALL_STATIC atau USE_ORIGIN_HEADERS, cache negatif akan diterapkan pada respons dengan kode respons yang ditentukan yang tidak memiliki header Cache-Control atau Expires.

Jika mode cache disetel ke FORCE_CACHE_ALL, caching negatif akan menggantikan header caching yang ditetapkan oleh origin, dan Cloud CDN akan meng-cache respons selama jangka waktu yang ditentukan oleh TTL, atau tidak akan menyimpannya dalam cache sama sekali jika tidak ada TTL yang ditetapkan.

Selain itu, saat mode cache ditetapkan ke FORCE_CACHE_ALL, Cloud CDN juga akan mengubah max-age yang dikirim ke klien di header Cache-Control. Secara khusus, jika error tertentu memiliki setelan TTL yang dikonfigurasi, Cloud CDN akan menggunakan setelan TTL dan setelan konfigurasi client_ttl yang lebih rendah, serta mengirim header Cache-Control: public,max-age=N dengan nilai tersebut. Jika error yang diberikan tidak memiliki setelan TTL yang dikonfigurasi, Cloud CDN akan menghapus header Cache-Control yang dikirim oleh asal. Cloud CDN juga akan selalu menghapus header Expires yang dikirim oleh asal.

Jika origin telah mengaktifkan caching negatif pada awalnya, tetapi kemudian dinonaktifkan (baik secara manual atau dengan menonaktifkan caching untuk kode respons tertentu), respons error yang di-cache akan dianggap valid hanya berdasarkan header Cache-Control atau Expires. Oleh karena itu, setelah cache negatif dinonaktifkan, respons tanpa perintah usia dalam cache di header-nya tidak akan disalurkan dari cache.

Cloud CDN menyimpan cache sebagai respons terhadap permintaan GET. Untuk informasi lebih lanjut, lihat Konten yang dapat di-cache.

Setiap entri cache diidentifikasi oleh kunci cache.

Nonaktifkan cache negatif

Konsol

  1. Di konsol Google Cloud, buka halaman Load Balancing.

    Buka halaman Load balancing

  2. Klik nama Load Balancer Aplikasi eksternal Anda.
  3. Klik Edit .
  4. Di Backend configuration, pilih backend, lalu klik Edit .
  5. Pastikan Enable Cloud CDN dipilih.
  6. Di bagian bawah jendela, klik Advanced configurations.
  7. Hapus centang pada kotak di samping Aktifkan cache negatif.
  8. Klik Perbarui.
  9. Klik Perbarui lagi.

gcloud

Untuk bucket backend, gunakan perintah gcloud compute backend-buckets create atau perintah gcloud compute backend-buckets update dengan flag --no-negative-caching.

Untuk layanan backend, gunakan perintah gcloud compute backend-services create atau perintah gcloud compute backend-services update dengan flag --no-negative-caching.

gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
    --no-negative-caching

api

Untuk bucket backend, gunakan panggilan API Metode: backendBuckets.insert atau Metode: backendBuckets.update.

Untuk layanan backend, gunakan panggilan API Metode: backendServices.insert atau Metode: backendServices.update.

Gunakan salah satu panggilan API berikut:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/BACKEND_BUCKET
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

Tambahkan cuplikan berikut ke isi permintaan JSON:

"cdnPolicy": {
  "negativeCaching": OFF
}