Menggunakan caching negatif

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

Tujuannya adalah untuk menerapkan kontrol terperinci atas penyimpanan ke cache untuk pengalihan atau error umum. Hal ini dapat mengurangi beban pada origin Anda dan meningkatkan kualitas 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 ke Google Cloud CLI versi terbaru:

    gcloud components update
    

Kode status dan TTL default

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

Cloud CDN menerapkan TTL default berikut untuk kode status ini:

Kode status Arti TTL
HTTP 300 Beberapa pilihan 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 Hilang 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 bagi kode status HTTP yang ditentukan.

Menyiapkan caching negatif

Dengan caching negatif, Anda dapat mengonfigurasi layanan untuk meng-cache kegagalan dan keberhasilan. Hal ini membuat Cloud CDN dapat melindungi origin dari permintaan yang menghasilkan error (seperti 404 Not Found) dengan cara yang sama seperti melindungi origin 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 Enable negative caching.
  8. Klik Add negative caching policy.
    1. Masukkan kode status HTTP.
    2. Pilih Time to live (TTL) cache.
  9. Klik Update.
  10. Klik Update lagi.

gcloud

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

Untuk layanan backend, gunakan perintah gcloud compute backend-services create atau 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 dua respons error tertentu, misalnya, tetapkan respons dengan kode status 404 di-cache selama 60 detik, dan respons dengan kode status 405 di-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 Method: backendBuckets.insert atau Method: backendBuckets.update.

Untuk layanan backend, gunakan panggilan API Method: backendServices.insert atau Method: 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
    }
  ]
}

Caching negatif harus diaktifkan untuk 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 jika ada kebijakan.

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 menyimpan respons dalam cache. 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 mungkin dikeluarkan dari cache sebelum TTL yang ditentukan.

Jika mode cache disetel ke CACHE_ALL_STATIC atau USE_ORIGIN_HEADERS, caching negatif diterapkan ke respons dengan kode status HTTP tertentu, seperti 404, 501, 502, atau 503. Durasi respons negatif ini di-cache ditentukan oleh aturan prioritas berikut:

  • Jika respons negatif dari origin menyertakan header respons explicit Cache-Control atau Expires, Cloud CDN akan meng-cache respons negatif selama durasi yang ditentukan oleh header ini.

    Misalnya, jika origin Anda menampilkan 404 Not Found dengan setelan Cache-Control: public,max-age=60, kode status 404 akan di-cache selama 60 detik, dan kebijakan caching negatif akan diabaikan untuk permintaan tertentu tersebut.

  • Jika respons negatif dari origin tidak memiliki header Cache-Control atau Expires, Cloud CDN akan menerapkan TTL kebijakan caching negatif yang dikonfigurasi. Misalnya, jika origin Anda menampilkan 404 Not Found tanpa header caching, respons akan di-cache selama TTL yang ditentukan dalam cdnPolicy.negativeCachingPolicy untuk 404 status code.

Jika mode cache disetel ke FORCE_CACHE_ALL, caching negatif akan menggantikan header caching apa pun yang ditetapkan oleh origin. Cloud CDN meng-cache respons selama jangka waktu yang ditentukan oleh TTL, atau tidak meng-cache respons tersebut jika tidak ada TTL yang ditetapkan.

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

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

Cloud CDN meng-cache sebagai respons terhadap permintaan GET. Untuk informasi selengkapnya, lihat Konten yang dapat di-cache.

Setiap entri cache diidentifikasi oleh kunci cache.

Menonaktifkan caching 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 Enable negative caching.
  8. Klik Update.
  9. Klik Update lagi.

gcloud

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

Untuk layanan backend, gunakan perintah gcloud compute backend-services create atau 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 Method: backendBuckets.insert atau Method: backendBuckets.update.

Untuk layanan backend, gunakan panggilan API Method: backendServices.insert atau Method: 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
}