View a markdown version of this page

Mengelola berapa lama konten tetap berada di cache (kedaluwarsa) - Amazon CloudFront

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengelola berapa lama konten tetap berada di cache (kedaluwarsa)

Anda dapat mengontrol berapa lama file Anda tetap dalam CloudFront cache sebelum mener CloudFront uskan permintaan lain ke sumber Anda. Dengan mengurangi durasi, Anda dapat menyajikan konten dinamis. Peningkatan durasi berarti bahwa pengguna Anda mendapatkan kinerja yang lebih baik karena file Anda lebih mungkin dilayani secara langsung dari edge cache. Durasi yang lebih lama juga mengurangi beban yang berasal dari Anda.

Biasanya, CloudFront menyajikan file dari lokasi tepi hingga durasi cache yang Anda tentukan berlalus—yaitu, hingga file kedaluwarsa. Setelah kedaluwarsa, saat berikutnya lokasi tepi mendapat permintaan untuk file CloudFront , meneruskan permintaan ke asal untuk memverifikasi bahwa cache berisi versi terbaru dari file. Tanggapan dari sumber tergantung pada apakah file telah berubah:

  • Jika CloudFront cache sudah memiliki versi terbaru, asal mengembalikan kode status304 Not Modified.

  • Jika CloudFront cache tidak memiliki versi terbaru, asal mengembalikan kode status 200 OK dan versi terbaru dari file.

Jika file di lokasi tepi tidak sering diminta, CloudFront mungkin menghapus file tersebut—menghapus file sebelum tanggal kedaluwarsa—untuk memberi ruang bagi file yang telah diminta baru-baru ini.

Sebaiknya kelola durasi cache Anda dengan memperbarui kebijakan cache distribusi Anda. Jika Anda memilih untuk tidak menggunakan kebijakan cache, TTL (Time to Live) default adalah 24 jam, tetapi Anda dapat memperbarui pengaturan berikut untuk mengganti default:

  • Untuk mengubah durasi cache untuk semua file yang cocok dengan pola jalur yang sama, Anda dapat mengubah CloudFront pengaturan untuk TTL Minimum, TTL Maksimum , dan TTL Def ault untuk perilaku cache. Untuk informasi tentang pengaturan individual, lihatTTL Minimum,TTL Maksimum, danTTL bawaan.

  • Untuk mengubah durasi cache untuk file individual, Anda dapat mengonfigurasi asal Anda untuk menambahkan Cache-Control header dengan max-age direk s-maxage tif or, atau Expires header ke file. Untuk informasi selengkapnya, lihat Gunakan header untuk mengontrol durasi cache untuk objek individual.

Untuk informasi selengkapnya tentang bagaimana TTL Minimum, TTL Def ault, dan TTL Maksimum berinteraksi dengan ar max-age ahan s-maxage dan bidang Expires header, lihat. Tentukan jumlah waktu yang CloudFront menyimpan objek

Anda juga dapat mengontrol berapa lama kesalahan (misalnya,404 Not Found) tetap berada di CloudFront cache sebelum CloudFront mencoba lagi untuk mendapatkan objek yang diminta dengan meneruskan permintaan lain ke asal Anda. Untuk informasi selengkapnya, lihat Bagaimana CloudFront memproses kode status HTTP 4xx dan 5xx dari asal Anda.

Gunakan header untuk mengontrol durasi cache untuk objek individual

Anda dapat menggunakan Cache-Control dan Expires header untuk mengontrol berapa lama objek tetap berada di dalam cache. Pengaturan untuk TTL Minimum, TTL bawaan, dan TTL Maksimum juga memengaruhi durasi cache, tetapi berikut ini gambaran umum tentang bagaimana header dapat memengaruhi durasi cache:

  • Dengan direk Cache-Control max-age tif, Anda dapat menentukan berapa lama (dalam detik) bahwa Anda ingin objek tetap berada di cache sebelum CloudFront mendapatkan objek lagi dari server asal. CloudFrontDukungan waktu kedaluwarsa minimum adalah 0 detik. Nilai maksimumnya adalah 100 tahun. Tentukan nilai dalam format berikut:

    Cache-Control: max-age=seconds

    Misalnya, arahan berikut memberitahu CloudFront untuk menyimpan objek terkait dalam cache selama 3600 detik (satu jam):

    Cache-Control: max-age=3600

    Jika Anda ingin objek tetap berada di cache CloudFront tepi untuk durasi yang berbeda dari pada cache browser, Anda dapat menggunakan arahan Cache-Control max-age dan bersama-samaCache-Control s-maxage. Untuk informasi selengkapnya, lihat Tentukan jumlah waktu yang CloudFront menyimpan objek.

  • Dengan bidang Expires header, Anda dapat menentukan tanggal dan waktu kedaluwarsa menggunakan format yang ditentukan dalam RFC 2616, Hypertext Transfer Protocol - HTTP/1.1 Bagian 3.3.1, Tanggal Penuh, misalnya:

    Sat, 27 Jun 2015 23:59:59 GMT

Kami sarankan Anda menggunakan Cache-Control max-age lebih langsung, bukan Expires kolom header untuk mengontrol caching objek. Jika Anda menentukan nilai baik untuk Cache-Control max-age dan untukExpires, hanya CloudFront menggunakan nilai dariCache-Control max-age.

Untuk informasi selengkapnya, lihat Tentukan jumlah waktu yang CloudFront menyimpan objek.

Anda tidak dapat menggunakan Cache-Control kolom HTTP atau Pragma header dalam GET permintaan dari penampil CloudFront untuk memaksa kembali ke server asal untuk objek. CloudFront mengabaikan bidang header tersebut dalam permintaan penampil.

Untuk informasi selengkapnya tentang bidang Cache-Control dan Expires header, lihat bagian berikut di RFC 2616, Hypertext Transfer Protocol --: HTTP/1.1

Sajikan konten basi (kedaluwarsa)

CloudFront mendukung ar Stale-While-Revalidate ahan kontrol dan Stale-If-Error cache. Anda dapat menggunakan arahan ini untuk menentukan berapa lama konten basi tersedia untuk pemirsa.

Stale-While-Revalidate

Arahan ini memungkinkan CloudFront untuk menyajikan konten basi dari cache sementara CloudFront secara asinkron mengambil versi baru dari asal. Ini meningkatkan latensi karena pemirsa menerima tanggapan segera dari lokasi tepi tanpa harus menunggu pengambilan latar belakang. Konten segar dimuat di latar belakang untuk permintaan di masa mendatang.

contoh Contoh: Stale-While-Revalidate

CloudFront melakukan hal berikut ketika Anda mengatur Cache-Control header untuk menggunakan arahan ini.

Cache-Control: max-age=3600, stale-while-revalidate=600
  1. CloudFront akan menyimpan respons selama satu jam (max-age=3600).

  2. Jika permintaan dibuat setelah durasi ini, CloudFront menyajikan konten basi, sementara secara bersamaan mengirim permintaan ke asal untuk memvalidasi ulang dan menyegarkan konten yang di-cache.

  3. Saat konten divalidasi ulang, CloudFront menyajikan konten basi hingga 10 menit ()stale-while-revalidate=600.

catatan

CloudFront akan melayani konten basi hingga nilai direktif atau stale-while-revalidate nilai TTL CloudFront maksimum, mana yang kurang. Setelah durasi TTL maksimum, objek basi tidak akan tersedia dari cache tepi, terlepas dari nilainya. stale-while-revalidate

Stale-If-Error

Arahan ini memungkinkan CloudFront untuk menyajikan konten basi dari cache jika asal tidak dapat dijangkau atau mengembalikan kode kesalahan yang antara 500 dan 600. Ini memastikan bahwa pemirsa dapat mengakses konten bahkan selama pemadaman asal.

contoh Contoh: Stale-If-Error

CloudFront melakukan hal berikut ketika Anda mengatur Cache-Control header untuk menggunakan arahan ini.

Cache-Control: max-age=3600, stale-if-error=86400
  1. CloudFront menyimpan respons selama satu jam (max-age=3600).

  2. Jika asal tidak aktif atau mengembalikan kesalahan setelah durasi ini, CloudFront terus menyajikan konten basi hingga 24 jam () stale-if-error=86400

  3. Jika Anda mengonfigurasi respons kesalahan kustom, CloudFront akan mencoba untuk menyajikan konten basi jika terjadi kesalahan dalam stale-if-error durasi yang ditentukan. Jika konten basi tidak tersedia, maka CloudFront akan menampilkan respons kesalahan kustom yang Anda konfigurasikan untuk kode status kesalahan yang sesuai. Untuk informasi selengkapnya, lihat Hasilkan respons kesalahan khusus.

Catatan
  • CloudFront akan melayani konten basi hingga nilai direktif atau stale-if-error nilai TTL CloudFront maksimum, mana yang kurang. Setelah durasi TTL maksimum, objek basi tidak akan tersedia dari cache tepi, terlepas dari nilainya. stale-if-error

  • Jika Anda tidak mengonfigurasi stale-if-error atau kustom respons kesalahan, CloudFront akan mengembalikan objek basi atau meneruskan respons kesalahan kembali ke penampil, tergantung pada apakah objek yang diminta ada di cache tepi atau tidak. Untuk informasi selengkapnya, lihat Cara CloudFront memproses kesalahan jika Anda belum mengonfigurasi halaman kesalahan khusus.

Gunakan kedua arahan

K stale-while-revalidate edu stale-if-error anya dan merupakan arahan kontrol cache independen yang dapat Anda gunakan bersama untuk mengurangi latensi dan menambahkan buffer agar asal Anda merespons atau pulihkan.

contoh Contoh: Menggunakan kedua arahan

CloudFront melakukan hal berikut ketika Anda mengatur Cache-Control header untuk menggunakan arahan berikut.

Cache-Control: max-age=3600, stale-while-revalidate=600, stale-if-error=86400
  1. CloudFront menyimpan respons selama satu jam (max-age=3600).

  2. Jika permintaan dibuat setelah durasi ini, CloudFront sajikan konten basi hingga 10 menit (stale-while-revalidate=600) saat konten divalidasi ulang.

  3. Jika server asal mengembalikan kesalahan saat CloudFront mencoba memvalidasi ulang konten, CloudFront akan terus menyajikan konten basi hingga 24 jam ()stale-if-error=86400.

Caching adalah keseimbangan antara kinerja dan kesegaran. Menggunakan arahan seperti stale-while-revalidate dan stale-if-error dapat meningkatkan kinerja dan pengalaman pengguna, tetapi pastikan konfigurasi selaras dengan seberapa segar konten Anda inginkan. Arahan konten basi paling cocok untuk kasus penggunaan di mana konten perlu disegarkan tetapi memiliki versi terbaru tidak penting. Selain itu, jika konten Anda tidak berubah atau jarang berubah, stale-while-revalidate dapat menambahkan permintaan jaringan yang tidak perlu. Sebagai gantinya, pertimbangkan untuk mengatur durasi cache yang panjang.

Tentukan jumlah waktu yang CloudFront menyimpan objek

Untuk mengontrol jumlah waktu yang CloudFront menyimpan objek di cache sebelum mengirim permintaan lain ke asal, Anda dapat:

  • Tetapkan nilai TTL minimum, maksimum, dan default dalam perilaku cache CloudFront distribusi. Anda dapat mengatur nilai-nilai ini dalam kebijakan cache yang melekat pada perilaku cache (disarankan), atau dalam pengaturan cache warisan.

  • Sertakan Expires header Cache-Control atau dalam tanggapan dari asal. Header ini juga membantu menentukan berapa lama browser menyimpan objek di cache browser sebelum mengirim permintaan lain ke CloudFront.

Tabel berikut menjelaskan bagaimana header Cache-Control dan Expires yang dikirim dari asal digunakan bersama dengan pengaturan TTL dalam perilaku cache untuk memengaruhi caching.

Header asal TTL minimum = 0 TTL minimum> 0

Asal menambahkan Cache-Control: max-age direktif ke objek

CloudFront caching

CloudFront menyimpan objek untuk nilai direktif yang lebih rendah Cache-Control: max-age atau nilai TTL CloudFront maksimum.

Caching browser

Browser menyimpan cache objek untuk nilai arahan Cache-Control: max-age.

CloudFront caching

CloudFront caching tergantung pada nilai TTL CloudFront minimum dan TTL maksimum dan direktif: Cache-Control max-age

  • Jika minimum TTL max-age < TTL maksimum, maka CloudFront cache objek untuk nilai direktif. Cache-Control: max-age

  • Jika max-age < minimum TTL, maka CloudFront cache objek untuk nilai TTL CloudFront minimum.

  • Jika max-age > maksimum TTL, maka CloudFront cache objek untuk nilai TTL CloudFront maksimum.

Caching browser

Browser menyimpan cache objek untuk nilai arahan Cache-Control: max-age.

Asal tidak menambahkan direk Cache-Control: max-age tif ke objek

CloudFront cache

CloudFront menyimpan objek untuk nilai TTL CloudFront default.

Caching browser

Tergantung pada peramban.

CloudFront cache

CloudFront menyimpan objek untuk nilai TTL CloudFront minimum atau TTL default yang lebih besar.

Caching browser

Tergantung pada peramban.

Asal menambahkan Cache-Control: max-age dan Cache-Control: s-maxage mengarahkan ke objek

CloudFront cache

CloudFront menyimpan objek untuk nilai direktif yang lebih rendah Cache-Control: s-maxage atau nilai TTL CloudFront maksimum.

Caching browser

Browser menyimpan cache objek untuk nilai arahan Cache-Control max-age.

CloudFront cache

CloudFront caching tergantung pada nilai TTL CloudFront minimum dan TTL maksimum dan direktif: Cache-Control: s-maxage

  • Jika minimum TTL s-maxage < TTL maksimum, maka CloudFront cache objek untuk nilai direktif. Cache-Control: s-maxage

  • Jika s-maxage < minimum TTL, maka CloudFront cache objek untuk nilai TTL CloudFront minimum.

  • Jika s-maxage > maksimum TTL, maka CloudFront cache objek untuk nilai TTL CloudFront maksimum.

Caching browser

Browser menyimpan cache objek untuk nilai arahan Cache-Control: max-age.

Origin menambahkan Expires header ke objek

CloudFront caching

CloudFront menyimpan objek hingga tanggal di Expires header atau untuk nilai TTL CloudFront maksimum, mana yang lebih cepat.

Caching browser

Browser menyimpan cache objek hingga tanggal di header Expires.

CloudFront cache

CloudFront caching tergantung pada nilai TTL CloudFront minimum dan TTL maksimum dan header: Expires

  • Jika minimum TTL Expires < TTL maksimum, maka CloudFront cache objek hingga tanggal dan waktu di header. Expires

  • Jika Expires < minimum TTL, maka CloudFront cache objek untuk nilai TTL CloudFront minimum.

  • Jika Expires > maksimum TTL, maka CloudFront cache objek untuk nilai TTL CloudFront maksimum.

Caching browser

Browser menyimpan cache objek hingga tanggal dan waktu di header Expires.

Origin menambahkan Cache-Control: no-cacheno-store,, and/or private arahan ke objek

CloudFront dan browser menghormati header.

CloudFront caching

CloudFront menyimpan objek untuk nilai TTL CloudFront minimum. Lihat peringatan di bawah tabel ini.

Caching browser

Browser mematuhi header.

Awas
  • Jika TTL minimum Anda lebih besar dari 0 CloudFront , gunakan TTL minimum kebijakan cache, meskipun arahanCache-Control: no-cache,no-store, and/or private ada di header asal.

    • Jika asal dapat dijangkau, CloudFront dapatkan objek dari asal dan mengembalikannya ke penampil.

    • Jika asal tidak dapat dijangkau dan nilai TTL minimum atau maksimum lebih besar dari 0, CloudFront akan melayani objek yang didapat dari asal sebelumnya.

    Untuk menghindari perilaku ini, sertakan arahan Cache-Control: stale-if-error=0 dengan objek yang dikembalikan dari asal. Hal ini CloudFront menyebabkan mengembalikan kesalahan sebagai respons terhadap permintaan di masa mendatang jika asal tidak dapat dijangkau, daripada mengembalikan objek yang didapat dari asal sebelumnya.

  • CloudFront tidak menyimpan kode status HTTP 501 (Tidak Diimplementasikan) dari asal S3 ketika header asal menyertakan arahanCache-Control: no-cache,no-store, and/or private. Ini adalah perilaku default untuk asal S3, bahkan jika pengaturan TTL minimum Anda lebih besar dari 0.

Untuk informasi tentang cara mengubah pengaturan untuk distribusi menggunakan CloudFront konsol, lihatPerbarui distribusi. Untuk informasi tentang cara mengubah pengaturan untuk distribusi menggunakan CloudFront API, lihat UpdateDistribution.

Menambahkan header ke objek Anda dengan menggunakan konsol Amazon S3

Anda dapat menambahkan bidang Expires header Cache-Control atau ke objek Amazon S3 Anda. Untuk melakukannya, Anda memodifikasi bidang metadata untuk objek.

Untuk menambahkan bidang header Cache-Control atau Expirates ke objek Amazon S3
  1. Ikuti prosedur di bagian Meng ganti metadata yang ditentukan sistem pada topik Mengedit metadata objek di konsol Amazon S3 di Panduan Pengguna Amazon S3.

  2. Untuk Kunci, pilih nama header yang Anda tambahkan (Cache-Controlatau Kedaluwar sa).

  3. Untuk Nilai, masukkan nilai header. Misalnya, untuk header Cache-Control, Anda bisa memasukkan max-age=86400. Untuk Expires, Anda dapat memasukkan tanggal kedaluwarsa dan waktu seperti Wed, 30 Jun 2021 09:28:00 GMT.

  4. Ikuti prosedur lainnya untuk menyimpan perubahan metadata Anda.