Halaman ini memberikan petunjuk untuk menggunakan cache negatif dengan Cloud CDN. Dengan caching negatif, Anda dapat menetapkan TTL yang berbeda untuk setiap kode status.
Alasan untuk melakukannya adalah menerapkan kontrol terperinci atas penyimpanan ke cache untuk error atau pengalihan 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 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 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 cache negatif untuk menetapkan TTL cache untuk kode status HTTP yang ditentukan.
Menyiapkan caching negatif
Caching negatif memungkinkan Anda mengonfigurasi layanan untuk meng-cache kegagalan serta keberhasilan. Hal ini memungkinkan Cloud CDN melindungi origin dari permintaan yang menghasilkan error (seperti 404 Not Found) dengan cara yang sama seperti melindungi origin dari permintaan yang menghasilkan respons yang 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 Konfigurasi lanjutan.
- Klik Aktifkan caching negatif.
- Klik Tambahkan kebijakan caching negatif.
- Masukkan kode status HTTP.
- Pilih Time to live (TTL) cache.
- Klik Perbarui.
- 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
untuk di-cache selama 60 detik, dan respons dengan kode status 405
untuk 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 di Kode status dan TTL default.
Saat menentukan kebijakan caching negatif, pastikan untuk menentukan TTL cache untuk semua kode respons yang ingin Anda simpan dalam cache. Cloud CDN tidak menerapkan cache negatif default jika kebijakan sudah ada.
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. Untuk 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 dihapus 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 respons yang ditentukan yang
tidak memiliki header Cache-Control
atau Expires
.
Jika mode cache disetel ke FORCE_CACHE_ALL
, caching negatif akan mengganti header caching apa pun yang ditetapkan oleh origin, dan Cloud CDN akan menyimpan respons ke dalam cache selama jangka waktu yang ditentukan oleh TTL, atau tidak akan menyimpannya ke 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 yang lebih kecil dan setelan konfigurasi client_ttl
, lalu mengirim header Cache-Control: public,max-age=N
dengan nilai tersebut. Jika error tertentu tidak memiliki setelan TTL yang dikonfigurasi, Cloud CDN akan menghapus header Cache-Control
yang dikirim oleh origin. Cloud CDN juga akan selalu menghapus header Expires
yang dikirim oleh
asal.
Jika origin memiliki cache negatif yang awalnya diaktifkan, tetapi kemudian dinonaktifkan (baik
secara manual maupun dengan menonaktifkan cache untuk kode respons tertentu), respons error
yang di-cache dianggap valid hanya berdasarkan header Cache-Control
atau Expires
-nya. Oleh karena itu, setelah penyimpanan cache negatif dinonaktifkan, respons tanpa
arahan usia penyimpanan cache di headernya tidak akan ditayangkan dari cache.
Cloud CDN menyimpan 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
- 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 Konfigurasi lanjutan.
- Hapus centang pada kotak di samping Enable negative caching.
- Klik Perbarui.
- 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 }