Memahami kebijakan cache - Amazon CloudFront

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

Memahami kebijakan cache

Anda dapat menggunakan kebijakan cache untuk meningkatkan rasio hit cache Anda dengan mengontrol nilai (string kueri URL, header HTTP, dan cookie) yang disertakan dalam kunci cache. CloudFrontmenyediakan beberapa kebijakan cache yang telah ditentukan sebelumnya, yang dikenal sebagai kebijakan terkelola, untuk kasus penggunaan umum. Anda dapat menggunakan kebijakan terkelola ini, atau Anda dapat membuat kebijakan cache sendiri yang khusus untuk kebutuhan Anda. Untuk informasi selengkapnya tentang kebijakan terkelola, lihat Gunakan kebijakan cache terkelola.

Kebijakan cache berisi pengaturan berikut, yang dikategorikan menjadi informasi kebijakan, waktu ke pengaturan langsung (TTL), dan pengaturan kunci cache.

Informasi kebijakan

Nama

Nama untuk mengidentifikasi kebijakan cache. Di konsol, Anda menggunakan nama untuk melampirkan kebijakan cache ke perilaku cache.

Deskripsi

Komentar untuk menjelaskan kebijakan cache. Ini opsional, tetapi dapat membantu Anda mengidentifikasi tujuan kebijakan cache.

Waktu ke pengaturan langsung (TTL)

Pengaturan time to live (TTL) bekerja sama dengan header Cache-Control dan Expires HTTP (jika berada dalam respons asal) untuk menentukan berapa lama objek dalam CloudFront cache tetap valid.

TTL Minimum

Jumlah waktu minimum, dalam hitungan detik, Anda ingin objek tetap berada di CloudFront cache sebelum CloudFront memeriksa dengan asal untuk melihat apakah objek telah diperbarui. Untuk informasi selengkapnya, lihat Mengelola berapa lama konten tetap dalam cache (kedaluwarsa).

TTL Maksimum

Jumlah waktu maksimum, dalam hitungan detik, objek tetap berada di CloudFront cache sebelum CloudFront memeriksa dengan asal untuk melihat apakah objek telah diperbarui. CloudFront menggunakan pengaturan ini hanya ketika asal mengirim Cache-Control atau Expires header dengan objek. Untuk informasi selengkapnya, lihat Mengelola berapa lama konten tetap dalam cache (kedaluwarsa).

TTL Default

Jumlah waktu default, dalam hitungan detik, yang Anda inginkan objek tetap berada di CloudFront cache sebelum CloudFront memeriksa dengan asal untuk melihat apakah objek telah diperbarui. CloudFront menggunakan nilai pengaturan ini sebagai TTL objek hanya ketika asal tidak mengirim Cache-Control atau Expires header dengan objek. Untuk informasi selengkapnya, lihat Mengelola berapa lama konten tetap dalam cache (kedaluwarsa).

catatan

Jika pengaturan TTL Minimum, TTL Maksimum, dan TTL Default semuanya diatur ke 0, ini menonaktifkan caching. CloudFront

Pengaturan tombol Cache

Pengaturan kunci cache menentukan nilai dalam permintaan penampil yang CloudFront disertakan dalam kunci cache. Nilai dapat mencakup string kueri URL, header HTTP, dan cookie. Nilai yang Anda sertakan dalam kunci cache secara otomatis disertakan dalam permintaan yang CloudFront dikirim ke asal, yang dikenal sebagai permintaan asal. Untuk informasi tentang pengendalian permintaan asal tanpa memengaruhi kunci cache, lihat Kontrol permintaan asal dengan kebijakan.

Pengaturan kunci Cache meliputi:

Header

Header HTTP dalam permintaan penampil yang CloudFront termasuk dalam kunci cache dan permintaan asal. Untuk header, Anda dapat memilih salah satu pengaturan berikut:

  • Tidak ada – Header HTTP dalam permintaan penampil adalah tidak yang termasuk dalam kunci cache dan tidak secara otomatis disertakan dalam permintaan asal.

  • Sertakan header berikut - Anda menentukan header HTTP mana dalam permintaan penampil yang disertakan dalam kunci cache dan secara otomatis disertakan dalam permintaan asal.

Saat Anda menggunakan setelan Sertakan header berikut, Anda menentukan header HTTP berdasarkan namanya, bukan nilainya. Misalnya, pertimbangkan HTTP header berikut:

Accept-Language: en-US,en;q=0.5

Dalam hal ini, Anda menentukan header sebagai Accept-Language, bukan sebagai Accept-Language: en-US,en;q=0.5. Namun, CloudFront termasuk header lengkap, termasuk nilainya, dalam kunci cache dan permintaan asal.

Anda juga dapat menyertakan header tertentu yang dihasilkan oleh CloudFront dalam kunci cache. Untuk informasi selengkapnya, lihat Tambahkan header CloudFront permintaan.

Cookie

Cookie dalam permintaan penampil yang CloudFront termasuk dalam kunci cache dan permintaan asal. Untuk cookie, Anda dapat memilih salah satu pengaturan berikut:

  • Tidak ada – Cookie di permintaan penampil adalah tidak yang termasuk dalam kunci cache dan tidak secara otomatis disertakan dalam permintaan asal.

  • Semua – Semua cookie di permintaan penampil disertakan dalam kunci cache dan secara otomatis disertakan dalam permintaan asal.

  • Sertakan cookie tertentu - Anda menentukan cookie mana dalam permintaan penampil yang disertakan dalam kunci cache dan secara otomatis disertakan dalam permintaan asal.

  • Sertakan semua cookie kecuali — Anda menentukan cookie mana dalam permintaan penampil yang tidak termasuk dalam kunci cache dan tidak secara otomatis disertakan dalam permintaan asal. Semua cookie lain, kecuali cookie yang Anda tentukan, adalah disertakan dalam kunci cache dan secara otomatis disertakan dalam permintaan asal.

Ketika Anda menggunakan Sertakan cookie yang ditentukan atau Sertakan semua cookie kecuali pengaturan, Anda menentukan cookie dengan namanya, bukan nilainya. Misalnya, pertimbangkan berikut ini Cookie header:

Cookie: session_ID=abcd1234

Dalam hal ini, Anda menentukan cookie sebagai session_ID, bukan sebagai session_ID=abcd1234. Namun, CloudFront termasuk cookie lengkap, termasuk nilainya, dalam kunci cache dan permintaan asal.

String kueri

String kueri URL dalam permintaan penampil yang CloudFront disertakan dalam kunci cache dan permintaan asal. Untuk string kueri, Anda dapat memilih salah satu pengaturan berikut:

  • Tidak ada – String kueri pada permintaan pemirsa adalah tidak yang termasuk dalam kunci cache dan tidak secara otomatis disertakan dalam permintaan asal.

  • Semua – Semua string kueri dalam permintaan penampil disertakan dalam kunci cache dan juga secara otomatis disertakan dalam permintaan asal.

  • Sertakan string kueri yang ditentukan - Anda menentukan string kueri mana dalam permintaan penampil yang disertakan dalam kunci cache dan secara otomatis disertakan dalam permintaan asal.

  • Sertakan semua string kueri kecuali - Anda menentukan string kueri mana dalam permintaan penampil yang tidak disertakan dalam kunci cache dan tidak secara otomatis disertakan dalam permintaan asal. Semua string kueri lainnya, kecuali untuk yang Anda tentukan, adalah disertakan dalam kunci cache dan secara otomatis disertakan dalam permintaan asal.

Saat Anda menggunakan Sertakan string kueri yang ditentukan atau Sertakan semua string kueri kecuali setelan, Anda menentukan string kueri berdasarkan namanya, bukan nilainya. Misalnya, pertimbangkan alur URL berikut ini:

/content/stories/example-story.html?split-pages=false

Dalam hal ini, Anda menentukan string kueri sebagai split-pages, bukan sebagai split-pages=false. Namun, CloudFront termasuk string kueri lengkap, termasuk nilainya, dalam kunci cache dan permintaan asal.

Dukungan kompresi

Pengaturan ini memungkinkan CloudFront untuk meminta dan menyimpan objek cache yang dikompresi dalam format kompresi Gzip atau Brotli, ketika penampil mendukungnya. Pengaturan ini juga memungkinkan CloudFront kompresi bekerja. Penampil menunjukkan dukungan mereka untuk format kompresi ini dengan Accept-Encoding Header HTTP.

catatan

Browser web Chrome dan Firefox mendukung kompresi Brotli hanya jika permintaan dikirim menggunakan HTTPS. Browser ini tidak mendukung Brotli dengan permintaan HTTP.

Aktifkan pengaturan ini jika salah satu di bawah ini benar:

  • Asal Anda mengembalikan objek terkompresi Gzip ketika penampil mendukungnya (permintaan berisi header HTTP Accept-Encoding dengan gzip sebagai nilai). Dalam hal ini, gunakan pengaturan berkemampuan Gzip (disetel EnableAcceptEncodingGzip ke true dalam CloudFront API, AWS SDK AWS CLI, atau AWS CloudFormation).

  • Asal Anda mengembalikan objek terkompresi Brotli saat penampil mendukungnya (permintaan memuat Accept-Encoding Header HTTP dengan br sebagai nilai). Dalam kasus ini, gunakan setelan berkemampuan Brotli (disetel EnableAcceptEncodingBrotli ke true dalam CloudFront API, AWS SDK AWS CLI, atau). AWS CloudFormation

  • Perilaku cache yang dilampirkan kebijakan cache ini dikonfigurasi dengan CloudFrontkompresi. Dalam hal ini, Anda dapat mengaktifkan caching untuk Gzip atau Brotli, atau keduanya. Saat CloudFront kompresi diaktifkan, mengaktifkan caching untuk kedua format dapat membantu mengurangi biaya transfer data ke internet.

catatan

Jika Anda mengaktifkan caching untuk salah satu atau kedua format kompresi ini, jangan sertakan Accept-Encoding header dalam kebijakan permintaan asal yang terkait dengan perilaku cache yang sama. CloudFrontselalu menyertakan header ini dalam permintaan asal saat caching diaktifkan untuk salah satu format ini, jadi termasuk Accept-Encoding dalam kebijakan permintaan asal tidak berpengaruh.

Jika server asal Anda tidak mengembalikan objek terkompresi Gzip atau Brotli, atau perilaku cache tidak dikonfigurasi dengan CloudFront kompresi, jangan aktifkan caching untuk objek terkompresi. Jika Anda melakukannya, hal tersebut dapat menyebabkan penurunan rasio tembolok.

Berikut ini menjelaskan bagaimana pengaturan ini mempengaruhi CloudFront distribusi. Semua skenario berikut ini mengasumsikan bahwa permintaan pemirsa mencakup Accept-Encoding header. Ketika permintaan penampil tidak menyertakan Accept-Encoding header, CloudFront tidak menyertakan header ini di kunci cache dan tidak menyertakannya dalam permintaan asal yang sesuai.

Saat caching, objek terkompresi diaktifkan untuk kedua format kompresi

Jika penampil mendukung Gzip dan Brotli—yaitu, jika br nilai gzip dan keduanya ada di Accept-Encoding header dalam permintaan penampil— lakukan hal berikut: CloudFront

  • Normalisasi header ke Accept-Encoding: br,gzip dan mencakup header yang dinormalisasi dalam tombol cache. Kunci cache tidak menyertakan nilai lain yang ada di Accept-Encoding header yang dikirim oleh penampil.

  • Jika lokasi tepi memiliki objek terkompresi Brotli atau Gzip di cache yang sesuai dengan permintaan dan tidak kedaluwarsa, lokasi tepi mengembalikan objek ke penampil.

  • Jika lokasi tepi tidak memiliki objek terkompresi Brotli atau Gzip di cache yang cocok dengan permintaan dan tidak kedaluwarsa, CloudFront sertakan header (Accept-Encoding: br,gzip) yang dinormalisasi dalam permintaan asal yang sesuai. Permintaan asal tidak menyertakan nilai lain yang ada di Accept-Encoding header yang dikirim oleh penampil.

Jika penampil mendukung satu format kompresi tetapi tidak yang lain—misalnya, jika gzip adalah nilai di Accept-Encoding header dalam permintaan penampil tetapi br CloudFront tidak— lakukan hal berikut:

  • Normalisasi header ke Accept-Encoding: gzip dan mencakup header yang dinormalisasi dalam tombol cache. Kunci cache tidak menyertakan nilai lain yang ada di Accept-Encoding header yang dikirim oleh penampil.

  • Jika lokasi tepi memiliki objek terkompresi Gzip di cache yang cocok dengan permintaan dan tidak kedaluwarsa, lokasi tepi akan mengembalikan objek ke penampil.

  • Jika lokasi tepi tidak memiliki objek terkompresi Gzip di cache yang cocok dengan permintaan dan tidak kedaluwarsa, CloudFront sertakan header (Accept-Encoding: gzip) yang dinormalisasi dalam permintaan asal yang sesuai. Permintaan asal tidak menyertakan nilai lain yang ada di Accept-Encoding header yang dikirim oleh penampil.

Untuk memahami CloudFront apa yang dilakukan jika penampil mendukung Brotli tetapi tidak Gzip, ganti dua format kompresi satu sama lain dalam contoh sebelumnya.

Jika penampil tidak mendukung Brotli atau GZip—yaitu, Accept-Encoding header dalam permintaan penampil tidak berisi br atau sebagai nilai—: gzip CloudFront

  • Tidak termasuk Accept-Encoding header dalam kunci cache.

  • Termasuk Accept-Encoding: identity dalam permintaan asal terkait. Permintaan asal tidak menyertakan nilai lain yang ada di Accept-Encoding header yang dikirim oleh penampil.

Saat caching, objek terkompresi diaktifkan untuk satu format kompresi, tetapi tidak lainnya

Jika penampil mendukung format yang mengaktifkan caching — misalnya, jika caching objek terkompresi diaktifkan untuk Gzip dan penampil mendukung Gzip (gzipadalah salah satu nilai di Accept-Encoding header dalam permintaan penampil) — lakukan hal berikut: CloudFront

  • Normalisasi header ke Accept-Encoding: gzip dan mencakup header yang dinormalisasi dalam tombol cache.

  • Jika lokasi tepi memiliki objek terkompresi Gzip di cache yang cocok dengan permintaan dan tidak kedaluwarsa, lokasi tepi akan mengembalikan objek ke penampil.

  • Jika lokasi tepi tidak memiliki objek terkompresi Gzip di cache yang cocok dengan permintaan dan tidak kedaluwarsa, CloudFront sertakan header (Accept-Encoding: gzip) yang dinormalisasi dalam permintaan asal yang sesuai. Permintaan asal tidak menyertakan nilai lain yang ada di Accept-Encoding header yang dikirim oleh penampil.

Perilaku ini sama saat penampil mendukung Gzip dan Brotli ( header Accept-Encoding di permintaan penampil mencakup keduanya gzip dan br sebagai nilai), karena dalam skenario ini, caching di objek terkompresi untuk Brotli tidak diaktifkan.

Untuk memahami CloudFront apa yang terjadi jika caching objek terkompresi diaktifkan untuk Brotli tetapi tidak Gzip, ganti dua format kompresi satu sama lain dalam contoh sebelumnya.

Jika penampil tidak mendukung format kompresi yang caching diaktifkan (Accept-Encodingheader dalam permintaan penampil tidak berisi nilai untuk format tersebut), CloudFront:

  • Tidak termasuk Accept-Encoding header dalam kunci cache.

  • Termasuk Accept-Encoding: identity dalam permintaan asal terkait. Permintaan asal tidak menyertakan nilai lain yang ada di Accept-Encoding header yang dikirim oleh penampil.

Saat caching, objek terkompresi dinonaktifkan untuk kedua format kompresi

Saat caching objek terkompresi dinonaktifkan untuk kedua format kompresi CloudFront , perlakukan Accept-Encoding header sama seperti header HTTP lainnya dalam permintaan penampil. Secara default, itu tidak termasuk dalam kunci cache dan tidak termasuk dalam permintaan asal. Anda dapat memasukkannya ke dalam daftar header dalam kebijakan cache atau kebijakan permintaan asal sama seperti header HTTP lainnya.