The cache-control
Header adalah mekanisme utama untuk server HTTP untuk memberitahu proxy caching yang "kesegaran" dari tanggapan. (yaitu, bagaimana / jika lama menyimpan respons di cache)
Dalam beberapa situasi, cache-control
arahan tidak cukup. Diskusi dari kelompok kerja HTTP diarsipkan di sini, menjelaskan halaman yang hanya berubah dengan bahasa. Ini bukan kasus penggunaan yang benar untuk berbagai header, tetapi konteksnya berharga untuk diskusi kita. (Meskipun saya yakin header Vary akan menyelesaikan masalah dalam kasus itu, ada Cara yang Lebih Baik.) Dari halaman itu:
Vary
hanya untuk kasus-kasus di mana tidak ada harapan atau terlalu rumit bagi proxy untuk meniru apa yang akan dilakukan server.
Contoh yang dibuat-buat:
Server HTTP Anda memiliki halaman landing yang besar. Anda memiliki dua halaman yang sedikit berbeda dengan URL yang sama, tergantung apakah pengguna pernah ke sana sebelumnya. Anda membedakan antara permintaan dan "jumlah kunjungan" pengguna berdasarkan Cookie. Tetapi - karena laman landas server Anda sangat besar, Anda ingin proxy perantara menyimpan respons dalam cache jika memungkinkan.
Header URL, Last-Modified dan Cache-Control tidak cukup untuk memberikan wawasan ini ke proxy cache, tetapi jika Anda menambahkan Vary: Cookie
, mesin cache akan menambahkan header Cookie ke keputusan cache-nya.
Akhirnya, untuk lalu lintas kecil, situs web dinamis - Saya selalu menemukan yang sederhana Cache-Control: no-cache, no-store
dan Pragma: no-cache
memadai.
Edit - untuk menjawab pertanyaan Anda dengan lebih tepat: header permintaan HTTP 'Terima' menentukan Jenis Konten yang dapat diproses klien. Jika Anda memiliki dua salinan dari konten yang sama di URL yang sama, hanya berbeda dalam Jenis Konten, maka penggunaan Vary: Accept
mungkin sesuai.
Perbarui 11 Sep 12:
Saya menyertakan beberapa tautan yang muncul di komentar sejak komentar ini pertama kali dikirim. Keduanya adalah sumber yang sangat baik untuk contoh dunia nyata (dan masalah) dengan Vary: Terima; Jika Anda membaca jawaban ini, Anda perlu membaca tautan itu juga.
Yang pertama, dari EricLaw yang luar biasa, tentang perilaku Internet Explorer dengan header Vary dan beberapa tantangan yang dihadirkannya kepada pengembang: Vary Header Mencegah Caching di IE . Singkatnya, IE (pra IE9) tidak menyimpan konten apa pun yang menggunakan header Vary karena cache permintaan tidak menyertakan header Permintaan HTTP. EricLaw (Eric Lawrence di dunia nyata) adalah Manajer Program di tim IE.
Yang kedua adalah dari Eran Medan, dan merupakan diskusi yang sedang berlangsung tentang perilaku tak terduga terkait Vary di Chrome: Backing tidak menangani header Vary dengan benar . Ini terkait dengan perilaku IE, kecuali pengembang Chrome mengambil pendekatan yang berbeda - meskipun tampaknya itu bukan pilihan yang disengaja.