Menyajikan konten usang

Halaman ini memberikan informasi tentang penyajian konten usang dan sudah habis masa berlakunya dengan Cloud CDN. Dengan menyajikan konten usang, cache global Google dapat terus menyajikan konten saat server asal Anda tidak dapat dijangkau atau menampilkan error ke Cloud CDN.

Alasan untuk melakukannya adalah sebagai berikut:

  • Anda lebih memilih menyajikan konten usang kepada pengguna daripada menampilkan error kepada pengguna.
  • Menyajikan konten usang menghindari latensi saat cache menerima permintaan konten yang masa berlakunya baru saja berakhir. Alih-alih harus menunggu validasi ulang sinkron ke backend, cache menyajikan konten usang yang baru saja berakhir masa berlakunya, sekaligus memicu validasi ulang terpisah.

Cloud CDN menawarkan dua metode berikut untuk mengontrol durasi penyajian objek usang saat permintaan validasi ulang dikirim ke server asal:

  • Di server asal: Anda dapat menentukan perintah Cache-Control: stale-while-revalidate di header respons. Cloud CDN mematuhi perintah ini, dengan menyajikan konten usang selama jumlah detik yang ditentukan setelah waktu habis masa berlaku entri cache. Selama periode ini, Cloud CDN secara asinkron akan mengirim permintaan ke server asal untuk memvalidasi ulang dan memperbarui konten.

  • Melalui kebijakan: Ini adalah setelan konfigurasi Cloud CDN yang menentukan durasi maksimum, setelah respons berakhir, yang memungkinkan Cloud CDN terus menyajikan konten versi usang. Setelan ini dikonfigurasi menggunakan opsi serve-while-stale. Jika perintah stale-while-revalidate tidak ada dalam respons, setelan ini akan digunakan. Jika nilai tidak ditentukan, nilai default, 86400s (1 hari), akan digunakan.

Cloud CDN tidak mendukung perintah stale-if-error. Perintah ini menginstruksikan cache untuk menghindari penyajian konten usang kecuali jika validasi ulang sinkron dengan server asal gagal dengan kode status error tertentu.

Nilai default, minimum, dan maksimum adalah sebagai berikut:

  • Default: 86.400 detik (satu hari)
  • Minimum: 0 detik (menonaktifkan fitur)
  • Maksimum: 604.800 detik (satu minggu)

Konten usang disajikan hingga batas yang ditentukan setelah waktu habis masa berlaku entri cache, yang ditentukan oleh header max-age, s-maxage, atau Expires. Untuk mengetahui informasi selengkapnya, baca artikel Waktu habis masa berlaku dan permintaan validasi.

Jika edge caching Cloud CDN tidak memiliki salinan objek yang di-cache untuk menyajikan konten usang, atau objek telah mencapai TTL usang maksimum, Cloud CDN akan memvalidasi ulang konten secara sinkron dengan server asal. Jika server asal menampilkan error pada saat itu, Cloud CDN akan menampilkan error tersebut.

Logging dan Agen Pengguna

Konten asinkron yang dibuat oleh Cloud CDN akan muncul di server asal Anda persis seperti permintaan validasi ulang normal yang terjadi saat tidak menyajikan konten usang. Pengecualiannya adalah bahwa permintaan tersebut diberi tag dengan header User-Agent yang berisi Cloud-CDN-Google.

Konten asinkron juga di-log secara terpisah ke Cloud Logging, sehingga permintaan pengguna yang menyajikan konten usang akan menghasilkan dua entri log: yang pertama untuk konten yang sebenarnya disajikan kepada pengguna, dan yang kedua untuk permintaan validasi ulang ke server asal. Seperti validasi ulang sinkron, Cloud CDN dapat mengirim permintaan bersyarat dalam beberapa keadaan, atau hanya meminta ulang konten tanpa syarat. Dalam kedua kasus tersebut, kode respons yang di-log ke Cloud Logging sesuai dengan permintaan asli ke Cloud CDN. Misalnya, 200 OK untuk permintaan tanpa syarat, atau 304 Not Modified jika respons asli pengguna bersyarat.

Perintah permintaan max-stale klien

Klien dapat meminta waktu layanan usang yang lebih singkat dengan menentukan perintah cache-control max-stale. Jika ditentukan, perintah ini akan mengontrol jumlah keterlambatan yang ditoleransi klien.

Jika konten yang di-cache lebih usang daripada nilai max-stale klien, Cloud CDN akan memvalidasi ulang konten tersebut sebelum menyajikannya.

Klien tidak dapat meminta nilai max-stale yang lebih besar daripada nilai yang dikonfigurasi dengan opsi konfigurasi serve-while-stale dan perintah cache-control stale-while-revalidate dari server asal.

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
    

Menyajikan konten usang saat memvalidasi ulang

Konsol

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

    Buka Load balancing

  2. Klik nama Load Balancer Aplikasi eksternal Anda.
  3. Klik Edit.
  4. Untuk Backend configuration, pilih backend, lalu klik Edit.
  5. Pastikan Enable Cloud CDN dipilih.
  6. Di bagian bawah jendela, klik Advanced configuration.
  7. Untuk Additional CDN options, pilih salah satu opsi berikut untuk Serve while stale:
    • 1 menit
    • 5 menit
    • 10 menit
    • 30 menit
    • 1 hari (direkomendasikan)
    • 7 hari
  8. Klik Update.
  9. Klik Update lagi.

gcloud

Untuk bucket backend, gunakan perintah gcloud compute backend-buckets create atau perintah gcloud compute backend-buckets update dengan flag --serve-while-stale.

Untuk layanan backend, gunakan perintah gcloud compute backend-services create atau perintah gcloud compute backend-services update dengan flag --serve-while-stale.

gcloud compute backend-buckets (create | update) BACKEND_BUCKET_NAME
    --serve-while-stale=SECONDS
gcloud compute backend-services (create | update) BACKEND_SERVICE_NAME
    --serve-while-stale=SECONDS

Contoh:

gcloud compute backend-services update my-backend-service
    --serve-while-stale=180s

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": {
  "serveWhileStale": SECONDS
}

Menonaktifkan penyajian konten usang

Konsol

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

    Buka Load balancing

  2. Klik nama Load Balancer Aplikasi eksternal Anda.
  3. Klik Edit.
  4. Untuk Backend configuration, pilih backend, lalu klik Edit.
  5. Pastikan Enable Cloud CDN tidak dipilih.
  6. Di bagian bawah jendela, klik Advanced configuration.
  7. Untuk Additional CDN options > Serve while stale, pilih Disable serve while stale.
  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 nilai flag --serve-while-stale yang ditetapkan ke 0.

Untuk layanan backend, gunakan perintah gcloud compute backend-services create atau perintah gcloud compute backend-services update dengan nilai flag --serve-while-stale yang ditetapkan ke 0.

gcloud compute backend-services (create | update) (BACKEND_SERVICE_NAME | BACKEND_BUCKET_NAME)
    --serve-while-stale=0

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": {
  "serveWhileStale": 0
}