

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

# Mengontrol kunci cache dengan kebijakan
<a name="controlling-the-cache-key"></a>

Dengan *kebijakan CloudFront cache*, Anda dapat menentukan header HTTP, cookie, dan string kueri yang CloudFront disertakan dalam *kunci cache* untuk objek yang di-cache di CloudFront lokasi tepi. Kunci cache adalah pengidentifikasi unik untuk setiap objek dalam cache, dan menentukan apakah permintaan HTTP penampil menghasilkan *hit cache*.

Hit cache terjadi ketika permintaan penampil menghasilkan kunci cache yang sama dengan permintaan sebelumnya, dan objek untuk kunci cache tersebut berada di cache lokasi tepi dan valid. Ketika ada cache hit, objek disajikan ke penampil dari lokasi CloudFront tepi, yang memiliki manfaat sebagai berikut:
+ Berkurangnya beban pada server asal Anda
+ Berkurangnya latensi untuk penampil

Menyertakan nilai yang lebih sedikit dalam kunci cache meningkatkan kemungkinan hit cache. Ini dapat memberi Anda kinerja yang lebih baik dari situs web atau aplikasi Anda karena ada *rasio hit cache* yang lebih tinggi (proporsi permintaan pemirsa yang lebih tinggi yang menghasilkan hit cache). Untuk informasi selengkapnya, lihat [Memahami kunci cache](understanding-the-cache-key.md).

Untuk mengontrol kunci cache, Anda menggunakan *kebijakan CloudFront cache*. Anda melampirkan kebijakan cache ke satu atau beberapa perilaku cache dalam CloudFront distribusi.

Anda juga dapat menggunakan kebijakan cache untuk menentukan pengaturan time to live (TTL) untuk objek dalam CloudFront cache, dan memungkinkan CloudFront untuk meminta dan menyimpan objek terkompresi.

**catatan**  
Pengaturan cache tidak memengaruhi permintaan gRPC karena lalu lintas gRPC tidak dapat di-cache. Untuk informasi selengkapnya, lihat [Menggunakan gRPC dengan distribusi CloudFront](distribution-using-grpc.md).

**Topics**
+ [Memahami kebijakan cache](cache-key-understand-cache-policy.md)
+ [Buat kebijakan cache](cache-key-create-cache-policy.md)
+ [Gunakan kebijakan cache terkelola](using-managed-cache-policies.md)
+ [Memahami kunci cache](understanding-the-cache-key.md)

# Memahami kebijakan cache
<a name="cache-key-understand-cache-policy"></a>

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](using-managed-cache-policies.md).

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

## Informasi kebijakan
<a name="cache-key-understand-cache-policy-info"></a>

**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)
<a name="cache-key-understand-cache-policy-ttl"></a>

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)](Expiration.md).  
Jika TTL minimum Anda lebih besar dari 0, CloudFront akan menyimpan konten untuk setidaknya durasi yang ditentukan dalam TTL minimum kebijakan cache, bahkan jika`Cache-Control: no-cache`,`no-store`, atau `private` arahan ada di header asal.

**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)](Expiration.md).

**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)](Expiration.md).

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

## Pengaturan tombol Cache
<a name="cache-key-understand-cache-policy-settings"></a>

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 mengirim ke asal, dikenal sebagai *permintaan asal*. Untuk informasi tentang pengendalian permintaan asal tanpa memengaruhi kunci cache, lihat [Kontrol permintaan asal dengan kebijakan](controlling-origin-requests.md).

Pengaturan kunci Cache meliputi:
+ [Header ](#cache-policy-headers)
+ [Cookie](#cache-policy-cookies)
+ [String kueri ](#cache-policy-query-strings)
+ [Dukungan kompresi ](#cache-policy-compressed-objects)

**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](adding-cloudfront-headers.md).

**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.  
Untuk pengaturan kunci cache, CloudFront perlakukan karakter tanda bintang (`*`) untuk header, string kueri, dan cookie sebagai string literal, bukan sebagai wildcard.

**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](ServingCompressedFiles.md) untuk bekerja. Penampil menunjukkan dukungan mereka untuk format kompresi ini dengan `Accept-Encoding` Header HTTP.  
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 SDKs AWS CLI, atau 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 SDKs AWS CLI, atau CloudFormation).
+ Perilaku cache yang terkait dengan kebijakan cache ini dikonfigurasikan dengan [CloudFront kompresi](ServingCompressedFiles.md). 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.
Jika Anda mengaktifkan caching untuk salah satu atau kedua format kompresi ini, jangan sertakan `Accept-Encoding` header dalam [kebijakan permintaan asal](controlling-origin-requests.md) yang terkait dengan perilaku cache yang sama. CloudFront selalu 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](cache-hit-ratio.md).  
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 (`gzip`adalah 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-Encoding`header 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.

# Buat kebijakan cache
<a name="cache-key-create-cache-policy"></a>

Anda dapat menggunakan kebijakan cache untuk meningkatkan rasio ketukan cache dengan mengendalikan nilai (string kueri URL, header HTTP, dan cookie) yang disertakan dalam kunci cache. Anda dapat membuat kebijakan cache di CloudFront konsol, dengan AWS Command Line Interface (AWS CLI), atau dengan CloudFront API.

Setelah membuat kebijakan cache, Anda melampirkannya pada satu atau beberapa perilaku cache di CloudFront distribusi.

------
#### [ Console ]

**Untuk membuat kebijakan cache (konsole)**

1. Masuk ke Konsol Manajemen AWS dan buka halaman **Kebijakan** di CloudFront konsol di[https://console.aws.amazon.com/cloudfront/v4/home?#/policies](https://console.aws.amazon.com/cloudfront/v4/home?#/policies).

1. Pilih **Buat kebijakan cache**.

1. Pilih pengaturan yang diinginkan untuk kebijakan cache ini. Untuk informasi selengkapnya, lihat [Memahami kebijakan cache](cache-key-understand-cache-policy.md).

1. Setelah selesai, pilih **Buat**.

Setelah membuat kebijakan cache, Anda dapat memasangnya ke perilaku cache.

**Untuk melampirkan kebijakan cache ke distribusi yang sudah ada (konsole)**

1. Membuka **Distribusi** di halaman dalam CloudFront konsol di [https://console.aws.amazon.com/cloudfront/v4/home#/distributions](https://console.aws.amazon.com/cloudfront/v4/home#/distributions).

1. Pilih distribusi untuk diperbarui, lalu pilih **Perilaku** tab.

1. Pilih perilaku cache untuk diperbarui, lalu pilih **Edit**.

   Atau, untuk membuat perilaku cache baru, pilih **Buat perilaku**.

1. Di bagian **Kunci cache dan permintaan asal**, pastikan **kebijakan Cache dan kebijakan permintaan asal** dipilih.

1. Untuk **kebijakan Cache**, pilih kebijakan cache untuk dilampirkan ke perilaku cache ini.

1. Di bagian bawah halaman, pilih **Simpan perubahan**.

**Untuk melampirkan kebijakan cache ke distribusi baru (konsole)**

1. Buka CloudFront konsol di[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Pilih **Buat Distribusi**.

1. Di bagian **Kunci cache dan permintaan asal**, pastikan **kebijakan Cache dan kebijakan permintaan asal** dipilih.

1. Untuk **kebijakan Cache**, pilih kebijakan cache untuk dilampirkan ke perilaku cache default distribusi ini.

1. Pilih pengaturan yang diinginkan untuk asal, perilaku cache default, dan pengaturan distribusi lainnya. Untuk informasi selengkapnya, lihat [Semua referensi pengaturan distribusi](distribution-web-values-specify.md).

1. Setelah selesai, pilih **Buat distribusi**.

------
#### [ CLI ]

Untuk membuat kebijakan cache dengan AWS Command Line Interface (AWS CLI), gunakan **aws cloudfront create-cache-policy** perintah. Anda dapat menggunakan file input untuk memberikan parameter input perintah, daripada menentukan setiap parameter individu sebagai input baris perintah.

**Untuk membuat kebijakan cache (CLI dengan file input)**

1. Gunakan perintah berikut untuk membuat file dengan nama `cache-policy.yaml` yang berisi semua parameter input untuk **create-cache-policy** perintah.

   ```
   aws cloudfront create-cache-policy --generate-cli-skeleton yaml-input > cache-policy.yaml
   ```

1. Buka file dengan nama `cache-policy.yaml` yang baru saja Anda buat. Edit file untuk menentukan pengaturan kebijakan cache yang diinginkan, lalu simpan file. Anda dapat menghapus bidang opsional dari file, tetapi jangan menghapus bidang yang diperlukan.

   Untuk informasi lebih lanjut tentang pengaturan kebijakan cache, lihat [Memahami kebijakan cache](cache-key-understand-cache-policy.md).

1. Gunakan perintah berikut untuk membuat kebijakan cache menggunakan parameter input dari `cache-policy.yaml` file Anda.

   ```
   aws cloudfront create-cache-policy --cli-input-yaml file://cache-policy.yaml
   ```

   Catat `Id` nilai dalam output perintah. Ini adalah ID kebijakan cache, dan Anda memerlukannya untuk melampirkan kebijakan cache ke perilaku cache CloudFront distribusi.

**Untuk melampirkan kebijakan cache ke distribusi yang ada (CLI dengan file input)**

1. Gunakan perintah berikut untuk menyimpan konfigurasi distribusi untuk CloudFront distribusi yang ingin Anda perbarui. Ganti *distribution\$1ID* dengan ID distribusi.

   ```
   aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
   ```

1. Buka file dengan nama `dist-config.yaml` yang baru saja Anda buat. Edit file, membuat perubahan berikut pada setiap perilaku cache yang Anda perbarui untuk menggunakan kebijakan cache.
   + Dalam perilaku cache, tambahkan bidang bernama `CachePolicyId`. Untuk nilai bidang, gunakan ID kebijakan cache yang Anda catat setelah membuat kebijakan.
   + Hapus `MinTTL`, `MaxTTL`, `DefaultTTL`, dan `ForwardedValues` bidang dari perilaku cache. Pengaturan ini ditentukan dalam kebijakan cache, sehingga Anda tidak dapat menyertakan bidang ini dan kebijakan cache dalam perilaku cache yang sama.
   + Ubah nama `ETag` bidang menjadi`IfMatch`, tetapi jangan ubah nilai bidang.

   Simpan file setelah selesai.

1. Gunakan perintah berikut untuk memperbarui distribusi untuk menggunakan kebijakan cache. Ganti *distribution\$1ID* dengan ID distribusi.

   ```
   aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml
   ```

**Untuk melampirkan kebijakan cache ke distribusi baru (CLI dengan file input)**

1. Gunakan perintah berikut untuk membuat file dengan nama `distribution.yaml` yang berisi semua parameter input untuk **create-distribution** perintah.

   ```
   aws cloudfront create-distribution --generate-cli-skeleton yaml-input > distribution.yaml
   ```

1. Buka file dengan nama `distribution.yaml` yang baru saja Anda buat. Dalam perilaku cache default, di bidang `CachePolicyId` , masukkan ID kebijakan cache yang Anda catat setelah membuat kebijakan. Lanjutkan mengedit file untuk menentukan pengaturan distribusi yang Anda inginkan, kemudian simpan file setelah selesai.

   Untuk informasi lebih lanjut tentang pengaturan distribusi, lihat [Semua referensi pengaturan distribusi](distribution-web-values-specify.md).

1. Gunakan perintah berikut untuk membuat distribusi menggunakan parameter input dari `distribution.yaml` file Anda.

   ```
   aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml
   ```

------
#### [ API ]

Untuk membuat kebijakan cache dengan CloudFront API, gunakan [CreateCachePolicy](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateCachePolicy.html). Untuk informasi selengkapnya tentang bidang yang Anda tentukan dalam panggilan API ini, lihat [Memahami kebijakan cache](cache-key-understand-cache-policy.md) dan dokumentasi referensi API untuk AWS SDK atau klien API lainnya.

Setelah membuat kebijakan cache, Anda dapat memasangnya ke perilaku cache, menggunakan salah satu panggilan API berikut:
+ Untuk memasangnya ke perilaku cache dalam distribusi yang ada, gunakan [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html).
+ Untuk memasangnya ke perilaku cache dalam distribusi baru, gunakan [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html).

Untuk kedua panggilan API ini, berikan ID kebijakan cache di `CachePolicyId` bidang, di dalam perilaku cache. Untuk informasi selengkapnya tentang bidang lain yang Anda tentukan dalam panggilan API ini, lihat [Semua referensi pengaturan distribusi](distribution-web-values-specify.md) dan dokumentasi referensi API untuk AWS SDK atau klien API lainnya.

------

# Gunakan kebijakan cache terkelola
<a name="using-managed-cache-policies"></a>

CloudFront menyediakan serangkaian kebijakan cache terkelola yang dapat Anda lampirkan ke perilaku cache distribusi Anda. Dengan kebijakan cache terkelola, Anda tidak perlu menulis atau memelihara kebijakan cache Anda sendiri. Kebijakan terkelola menggunakan pengaturan yang dioptimalkan untuk kasus penggunaan spesifik.

Untuk menggunakan kebijakan cache terkelola, Anda melampirkannya ke perilaku cache dalam distribusi Anda. Prosesnya sama seperti ketika Anda membuat kebijakan cache, tetapi daripada membuat yang baru, Anda hanya perlu melampirkan salah satu kebijakan cache terkelola. Anda melampirkan kebijakan baik dengan nama (dengan konsol) atau dengan ID (dengan AWS CLI atau SDKs). Nama-nama dan IDs tercantum di bagian berikut.

Untuk informasi selengkapnya, lihat [Buat kebijakan cache](cache-key-create-cache-policy.md).

Topik berikut menjelaskan kebijakan cache terkelola yang dapat Anda gunakan.

**Topics**
+ [Amplify](#managed-cache-policy-amplify)
+ [CachingDisabled](#managed-cache-policy-caching-disabled)
+ [CachingOptimized](#managed-cache-caching-optimized)
+ [CachingOptimizedForUncompressedObjects](#managed-cache-caching-optimized-uncompressed)
+ [Elemen- MediaPackage](#managed-cache-policy-mediapackage)
+ [UseOriginCacheControlHeaders](#managed-cache-policy-origin-cache-headers)
+ [UseOriginCacheControlHeaders-QueryStrings](#managed-cache-policy-origin-cache-headers-query-strings)

## Amplify
<a name="managed-cache-policy-amplify"></a>

[Lihat kebijakan ini di CloudFront konsol](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/2e54312d-136d-493c-8eb9-b001f22f67d2)

Kebijakan ini dirancang untuk digunakan dengan asal yang merupakan aplikasi [AWS Amplify](https://aws.amazon.com/amplify/)web.

Saat menggunakan CloudFormation, the AWS CLI, atau CloudFront API, ID untuk kebijakan ini adalah:

`2e54312d-136d-493c-8eb9-b001f22f67d2`

Kebijakan ini memiliki pengaturan berikut:
+ **TTL minimum:** 2 detik
+ **TTL maksimum:** 600 detik (10 menit)
+ **Default TTL:** 2 detik
+ **Header termasuk dalam kunci cache:**
  + `Authorization`
  + `CloudFront-Viewer-Country`
  + `Host`

  `Accept-Encoding`Header yang dinormalisasi juga disertakan karena pengaturan objek terkompresi cache diaktifkan. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookie termasuk dalam kunci cache:** Semua cookie disertakan.
+ **String kueri disertakan dalam kunci cache:** Semua string kueri disertakan.
+ **Pengaturan objek terkompresi cache:** Diaktifkan. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

**Awas**  
Karena kebijakan ini memiliki TTL minimum lebih besar dari 0, CloudFront akan menyimpan konten untuk setidaknya durasi yang ditentukan dalam TTL minimum kebijakan cache, bahkan jika`Cache-Control: no-cache`,`no-store`, atau `private` arahan ada di header asal.

### AWS Amplify Kebijakan cache hosting
<a name="additional-amplify-policies"></a>

Amplify menggunakan kebijakan cache terkelola berikut untuk mengoptimalkan konfigurasi cache default untuk aplikasi pelanggan:
+ [Amplify-Default](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/4d1d2f1d-3a71-49ad-9e08-7ea5d843a556)
+ [Amplify- DefaultNoCookies](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/a6bad946-36c3-4c33-aa98-362c74a7fb13)
+ [Amplify- ImageOptimization](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/1c6db51a-a33f-469a-8245-dae26771f530)
+ [Amplify- StaticContent](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/7e5fad67-ee98-4ad0-b05a-394999eefc1a)

**catatan**  
Kebijakan ini hanya digunakan oleh Amplify. Kami tidak menyarankan Anda menggunakan kebijakan ini untuk distribusi Anda. 

Untuk informasi selengkapnya tentang mengelola konfigurasi cache untuk aplikasi yang dihosting Amplify, lihat [Mengelola konfigurasi cache di Panduan Pengguna](https://docs.aws.amazon.com/amplify/latest/userguide/caching.html) *Amplify* Hosting.

## CachingDisabled
<a name="managed-cache-policy-caching-disabled"></a>

[Lihat kebijakan ini di CloudFront konsol](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/4135ea2d-6df8-44a3-9df3-4b5a84be39ad)

Kebijakan ini menonaktifkan caching. Kebijakan ini berguna untuk konten dinamis dan untuk permintaan yang tidak dapat disimpan.

Saat menggunakan CloudFormation, the AWS CLI, atau CloudFront API, ID untuk kebijakan ini adalah:

`4135ea2d-6df8-44a3-9df3-4b5a84be39ad`

Kebijakan ini memiliki pengaturan berikut:
+ **TTL minimum:** 0 detik
+ **TTL maksimum:** 0 detik
+ **Default TTL:** 0 detik
+ **Header termasuk dalam kunci cache: Tidak** ada
+ **Cookie termasuk dalam kunci cache:** Tidak ada
+ **String kueri termasuk dalam kunci cache: Tidak** ada
+ **Pengaturan objek terkompresi Cache:** Dinonaktifkan

## CachingOptimized
<a name="managed-cache-caching-optimized"></a>

[Lihat kebijakan ini di CloudFront konsol](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/658327ea-f89d-4fab-a63d-7e88639e58f6)

Kebijakan ini dirancang untuk mengoptimalkan efisiensi cache dengan meminimalkan nilai yang CloudFront disertakan dalam kunci cache. CloudFront tidak menyertakan string kueri atau cookie apa pun di kunci cache, dan hanya menyertakan header yang dinormalisasi`Accept-Encoding`. Hal ini memungkinkan CloudFront untuk secara terpisah cache objek dalam format kompresi Gzip dan Brotli ketika asal mengembalikannya atau ketika kompresi [CloudFront tepi](ServingCompressedFiles.md) diaktifkan.

Saat menggunakan CloudFormation, the AWS CLI, atau CloudFront API, ID untuk kebijakan ini adalah:

`658327ea-f89d-4fab-a63d-7e88639e58f6`

Kebijakan ini memiliki pengaturan berikut:
+ **Minimum TTL:** 1 detik.
+ **TTL maksimum:** 31.536.000 detik (365 hari).
+ **Default TTL:** 86.400 detik (24 jam).
+ **Header yang disertakan dalam kunci cache:** Tidak ada yang disertakan secara eksplisit. Dinormalkan `Accept-Encoding` header disertakan karena pengaturan objek terkompresi cache diaktifkan. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookie yang disertakan dalam kunci cache:** Tidak ada.
+ **String kueri yang disertakan dalam kunci cache:** Tidak ada.
+ **Pengaturan objek terkompresi cache:** Diaktifkan. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

**Awas**  
Karena kebijakan ini memiliki TTL minimum lebih besar dari 0, CloudFront akan menyimpan konten untuk setidaknya durasi yang ditentukan dalam TTL minimum kebijakan cache, bahkan jika`Cache-Control: no-cache`,`no-store`, atau `private` arahan ada di header asal.

## CachingOptimizedForUncompressedObjects
<a name="managed-cache-caching-optimized-uncompressed"></a>

[Lihat kebijakan ini di CloudFront konsol](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/b2884449-e4de-46a7-ac36-70bc7f1ddd6d)

Kebijakan ini dirancang untuk mengoptimalkan efisiensi cache dengan meminimalkan nilai yang disertakan dalam kunci cache. Tidak ada string kueri, header, atau cookie yang disertakan. Kebijakan ini identik dengan yang sebelumnya, tetapi menonaktifkan pengaturan objek terkompresi cache.

Saat menggunakan CloudFormation, the AWS CLI, atau CloudFront API, ID untuk kebijakan ini adalah:

`b2884449-e4de-46a7-ac36-70bc7f1ddd6d`

Kebijakan ini memiliki pengaturan berikut:
+ **Minimum TTL:** 1 detik
+ **TTL maksimum:** 31.536.000 detik (365 hari)
+ **TTL default:** 86.400 detik (24 jam)
+ **Header termasuk dalam kunci cache: Tidak** ada
+ **Cookie termasuk dalam kunci cache:** Tidak ada
+ **String kueri termasuk dalam kunci cache: Tidak** ada
+ **Pengaturan objek terkompresi Cache:** Dinonaktifkan

**Awas**  
Karena kebijakan ini memiliki TTL minimum lebih besar dari 0, CloudFront akan menyimpan konten untuk setidaknya durasi yang ditentukan dalam TTL minimum kebijakan cache, bahkan jika`Cache-Control: no-cache`,`no-store`, atau `private` arahan ada di header asal.

## Elemen- MediaPackage
<a name="managed-cache-policy-mediapackage"></a>

[Lihat kebijakan ini di CloudFront konsol](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/08627262-05a9-4f76-9ded-b50ca2e3a84f)

Kebijakan ini dirancang untuk digunakan dengan asal yang merupakan AWS Elemental MediaPackage titik akhir.

Saat menggunakan CloudFormation, the AWS CLI, atau CloudFront API, ID untuk kebijakan ini adalah:

`08627262-05a9-4f76-9ded-b50ca2e3a84f`

Kebijakan ini memiliki pengaturan berikut:
+ **TTL minimum:** 0 detik
+ **TTL maksimum:** 31.536.000 detik (365 hari)
+ **TTL default:** 86.400 detik (24 jam)
+ **Header termasuk dalam kunci cache:**
  + `Origin`

  `Accept-Encoding`Header yang dinormalisasi juga disertakan karena pengaturan objek terkompresi cache diaktifkan untuk Gzip. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookie termasuk dalam kunci cache:** Tidak ada
+ **String kueri termasuk dalam kunci cache:**
  + `aws.manifestfilter`
  + `start`
  + `end`
  + `m`
+ **Pengaturan objek terkompresi cache:** Diaktifkan untuk Gzip. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

## UseOriginCacheControlHeaders
<a name="managed-cache-policy-origin-cache-headers"></a>

[Lihat kebijakan ini di CloudFront konsol](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/83da9c7e-98b4-4e11-a168-04f0df8e2c65)

Kebijakan ini dirancang untuk digunakan dengan origin yang menampilkan header respons `Cache-Control` HTTP dan tidak menyajikan konten yang berbeda berdasarkan nilai yang ada dalam string kueri. Jika asal Anda menyajikan konten yang berbeda berdasarkan nilai yang ada dalam string kueri, pertimbangkan untuk menggunakan[UseOriginCacheControlHeaders-QueryStrings](#managed-cache-policy-origin-cache-headers-query-strings).

Saat menggunakan CloudFormation, the AWS CLI, atau CloudFront API, ID untuk kebijakan ini adalah:

`83da9c7e-98b4-4e11-a168-04f0df8e2c65`

Kebijakan ini memiliki pengaturan berikut:
+ **TTL minimum:** 0 detik
+ **TTL maksimum:** 31.536.000 detik (365 hari)
+ **Default TTL:** 0 detik
+ **Header termasuk dalam kunci cache:**
  + `Host`
  + `Origin`
  + `X-HTTP-Method-Override`
  + `X-HTTP-Method`
  + `X-Method-Override`

  `Accept-Encoding`Header yang dinormalisasi juga disertakan karena pengaturan objek terkompresi cache diaktifkan. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookie termasuk dalam kunci cache:** Semua cookie disertakan.
+ **String kueri yang disertakan dalam kunci cache:** Tidak ada.
+ **Pengaturan objek terkompresi cache:** Diaktifkan. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

## UseOriginCacheControlHeaders-QueryStrings
<a name="managed-cache-policy-origin-cache-headers-query-strings"></a>

[Lihat kebijakan ini di CloudFront konsol](https://console.aws.amazon.com/cloudfront/v4/home#/policies/cache/4cc15a8a-d715-48a4-82b8-cc0b614638fe)

Kebijakan ini dirancang untuk digunakan dengan origin yang menampilkan header respons `Cache-Control` HTTP dan menyajikan konten berbeda berdasarkan nilai yang ada dalam string kueri. Jika asal Anda tidak menyajikan konten yang berbeda berdasarkan nilai yang ada dalam string kueri, pertimbangkan untuk menggunakan[UseOriginCacheControlHeaders](#managed-cache-policy-origin-cache-headers).

Saat menggunakan CloudFormation, the AWS CLI, atau CloudFront API, ID untuk kebijakan ini adalah:

`4cc15a8a-d715-48a4-82b8-cc0b614638fe`

Kebijakan ini memiliki pengaturan berikut:
+ **TTL minimum:** 0 detik
+ **TTL maksimum:** 31.536.000 detik (365 hari)
+ **Default TTL:** 0 detik
+ **Header termasuk dalam kunci cache:**
  + `Host`
  + `Origin`
  + `X-HTTP-Method-Override`
  + `X-HTTP-Method`
  + `X-Method-Override`

  `Accept-Encoding`Header yang dinormalisasi juga disertakan karena pengaturan objek terkompresi cache diaktifkan. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).
+ **Cookie termasuk dalam kunci cache:** Semua cookie disertakan.
+ **String kueri disertakan dalam kunci cache:** Semua string kueri disertakan.
+ **Pengaturan objek terkompresi cache:** Diaktifkan. Untuk informasi selengkapnya, lihat [Dukungan kompresi](cache-key-understand-cache-policy.md#cache-policy-compressed-objects).

# Memahami kunci cache
<a name="understanding-the-cache-key"></a>

*kunci cache* menentukan apakah penampil meminta CloudFront lokasi tepi menghasilkan *temuan cache*. Kunci cache adalah pengidentifikasi unik untuk objek dalam cache. Setiap objek dalam cache memiliki kunci cache unik.

Terjebak terjadi ketika permintaan penampil menghasilkan kunci cache yang sama dengan permintaan sebelumnya, dan objek untuk kunci cache tersebut ada di cache lokasi edge dan valid. Ketika ada cache hit, objek yang diminta disajikan ke penampil dari lokasi CloudFront tepi, yang memiliki manfaat sebagai berikut:
+ Berkurangnya beban pada server asal Anda
+ Berkurangnya latensi untuk penampil

Anda bisa mendapatkan kinerja yang lebih baik dari situs web atau aplikasi saat Anda memiliki *rasio tembolok* (proporsi yang lebih tinggi dari permintaan penampil yang menghasilkan ketukan cache). Salah satu cara untuk meningkatkan rasio ketukan cache Anda adalah dengan hanya memasukkan nilai minimum yang diperlukan dalam kunci cache. Untuk informasi lebih lanjut, lihat bagian berikut.

Anda dapat memodifikasi nilai (string kueri URL, header HTTP, dan cookie) dalam kunci cache menggunakan [kebijakan cache](controlling-the-cache-key.md). (Anda juga dapat memodifikasi kunci cache dengan menggunakan [Lambda @Edgefunction](lambda-at-the-edge.md) atau [CloudFront Fungsi](cloudfront-functions.md) pada permintaan penampil.) Sebelum memodifikasi kunci cache, penting untuk memahami bagaimana aplikasi Anda dirancang dan kapan dan bagaimana aplikasi tersebut dapat memberikan respons yang berbeda berdasarkan karakteristik permintaan penampil. Jika suatu nilai dalam permintaan penampil menentukan respons bahwa asal Anda akan kembali, Anda harus menyertakan nilai tersebut dalam kunci cache. Tetapi jika Anda menyertakan nilai dalam kunci cache yang tidak memengaruhi respons bahwa asal Anda kembali, Anda mungkin akhirnya menyimpan objek duplikat.

## Kunci cache default
<a name="cache-key-default"></a>

Secara default, kunci cache untuk CloudFront distribusi mencakup informasi berikut:
+ Nama domain CloudFront distribusi (misalnya, d111111abcdef8.cloudfront.net)
+ Jalur URL objek yang diminta (misalnya, `/content/stories/example-story.html`)

**catatan**  
`OPTIONS`Metode ini termasuk dalam kunci cache untuk `OPTIONS` permintaan. Ini berarti bahwa respons terhadap `OPTIONS` permintaan di-cache secara terpisah dari respons `GET` dan `HEAD` permintaan.

Nilai lain dari permintaan penampil tidak disertakan dalam kunci cache, secara default. Pertimbangkan permintaan HTTP berikut dari peramban web.

```
            GET /content/stories/example-story.html?ref=0123abc&split-pages=false HTTP/1.1
            Host: d111111abcdef8.cloudfront.net
            User-Agent: Mozilla/5.0 Gecko/20100101 Firefox/68.0
            Accept: text/html,*/*
            Accept-Language: en-US,en
            Cookie: session_id=01234abcd
            Referer: https://news.example.com/
```

Saat permintaan penampil seperti contoh ini masuk ke lokasi CloudFront tepi, CloudFront gunakan kunci cache untuk menentukan apakah ada cache yang terkena. Secara default, hanya komponen permintaan berikut yang disertakan dalam kunci cache: `/content/stories/example-story.html` dan`d111111abcdef8.cloudfront.net`. Jika objek yang diminta tidak ada dalam cache (cache hilang), maka CloudFront kirimkan permintaan ke asal untuk mendapatkan objek. Setelah mendapatkan objek, CloudFront mengembalikannya ke penampil dan menyimpannya di cache lokasi tepi.

Ketika CloudFront menerima permintaan lain untuk objek yang sama, sebagaimana ditentukan oleh kunci cache, CloudFront menyajikan objek cache ke penampil segera, tanpa mengirim permintaan ke asal. Misalnya, pertimbangkan permintaan HTTP berikut yang muncul setelah permintaan sebelumnya.

```
            GET /content/stories/example-story.html?ref=xyz987&split-pages=true HTTP/1.1
            Host: d111111abcdef8.cloudfront.net
            User-Agent: Mozilla/5.0 AppleWebKit/537.36 Chrome/83.0.4103.116
            Accept: text/html,*/*
            Accept-Language: en-US,en
            Cookie: session_id=wxyz9876
            Referer: https://rss.news.example.net/
```

Permintaan ini untuk objek yang sama seperti permintaan sebelumnya, tetapi berbeda dengan permintaan sebelumnya. Ada string kueri URL yang berbeda, berbeda `User-Agent` dan `Referer` dan `session_id` cookie. Namun, nilai-nilai ini tidak menjadi bagian dari kunci cache secara default, sehingga permintaan kedua ini menghasilkan temuan tembolok.

## Sesuaikan kunci cache
<a name="cache-key-custom"></a>

Dalam beberapa kasus, Anda mungkin ingin memasukkan lebih banyak informasi dalam kunci cache, meskipun melakukannya mungkin hanya akan menghasilkan lebih sedikit ketukan cache. Anda menentukan apa yang harus disertakan dalam kunci cache menggunakan [kebijakan cache](controlling-the-cache-key.md).

Misalnya, jika server asal Anda menggunakan `Accept-Language` Header HTTP dalam permintaan penampil untuk mengembalikan konten yang berbeda berdasarkan bahasa penampil, Anda mungkin ingin menyertakan header ini dalam tombol cache. Saat Anda melakukannya, CloudFront gunakan header ini untuk menentukan klik cache, dan sertakan header dalam *permintaan asal* (permintaan yang CloudFront dikirim ke asal saat ada cache yang hilang).

Salah satu konsekuensi potensial yang mencakup nilai tambahan dalam kunci cache adalah bahwa CloudFront mungkin berakhir saat menyimpan objek duplikat karena variasi yang dapat terjadi dalam permintaan penampil. Misalnya, penampil dapat mengirim nilai-nilai berikut untuk header `Accept-Language`:
+ `en-US,en`
+ `en,en-US`
+ `en-US, en`
+ `en-US`

Semua nilai yang berbeda ini menunjukkan bahwa bahasa pemirsa adalah bahasa Inggris, tetapi variasi dapat CloudFront menyebabkan cache objek yang sama beberapa kali. Hal ini dapat mengurangi temuan cache dan meningkatkan jumlah permintaan asal usul. Anda dapat menghindari duplikasi ini dengan tidak menyertakan `Accept-Language` header dalam kunci cache, dan sebagai gantinya mengonfigurasi situs web atau aplikasi Anda untuk menggunakan konten yang berbeda URLs dalam bahasa yang berbeda (misalnya,`/en-US/content/stories/example-story.html`).

Untuk setiap nilai yang ingin Anda sertakan dalam kunci cache, Anda harus memastikan bahwa Anda memahami berapa banyak variasi nilai tersebut yang mungkin muncul dalam permintaan penampil. Untuk nilai permintaan tertentu, tidak ada salahnya memasukkan nilai tersebut dalam kunci cache. Misalnya, `User-Agent` header dapat memiliki ribuan variasi unik, jadi umumnya bukan merupakan kandidat yang baik untuk dimasukkan dalam kunci cache. Cookie yang memiliki nilai khusus pengguna atau khusus sesi dan unik untuk ribuan (atau bahkan jutaan) permintaan juga bukan kandidat yang baik untuk inklusi kunci cache. Jika Anda memasukkan nilai-nilai ini ke dalam kunci cache, setiap variasi unik menghasilkan salinan objek lain di dalam cache. Jika salinan objek ini tidak unik, atau jika Anda berakhir dengan sejumlah besar objek yang sedikit berbeda, maka setiap objek hanya mendapat sejumlah kecil tembolok, Anda mungkin ingin mempertimbangkan pendekatan yang berbeda. Anda dapat mengecualikan nilai yang sangat variabel ini dari kunci cache, atau Anda dapat menandai objek sebagai tidak dapat dicache.

Berhati-hatilah saat menyesuaikan kunci cache. Terkadang hal ini diinginkan, tetapi dapat memiliki konsekuensi yang tidak diinginkan seperti menyimpan objek duplikat, menurunkan rasio hit cache Anda, dan meningkatkan jumlah permintaan asal. Jika situs web atau aplikasi asal Anda perlu menerima nilai tertentu dari permintaan penampil untuk analitik, telemetri, atau penggunaan lainnya, tetapi nilai ini tidak mengubah objek yang kembali ke objek asal, gunakan [kebijakan permintaan asal](controlling-origin-requests.md) untuk memasukkan nilai-nilai ini dalam permintaan asal, tetapi *tidak* memasukkannya ke dalam kunci cache.