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
- Di konsol Google Cloud, buka halaman Load Balancing.
- Klik nama Load Balancer Aplikasi eksternal Anda.
- Klik Edit .
- Di Backend configuration, pilih backend, lalu klik Edit .
- Pastikan Enable Cloud CDN dipilih.
- Di bagian bawah jendela, klik Advanced configurations.
- Klik Aktifkan cache negatif.
- Klik Tambahkan kebijakan caching negatif.
- Masukkan kode status HTTP.
- Pilih Cache time to live (TTL).
- Klik Perbarui.
- 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
- Di konsol Google Cloud, buka halaman Load Balancing.
- Klik nama Load Balancer Aplikasi eksternal Anda.
- Klik Edit .
- Di Backend configuration, pilih backend, lalu klik Edit .
- Pastikan Enable Cloud CDN dipilih.
- Di bagian bawah jendela, klik Advanced configurations.
- Hapus centang pada kotak di samping Aktifkan cache negatif.
- Klik Perbarui.
- 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 }