Mengapa atribut Kontrol-Cache dikirim dalam header permintaan (klien ke server)?

163

Setelah membaca tentang Cache-Controlbidang tajuk HTTP,

Saya mengerti bahwa Cache-Controllapangan di header respon HTTP (server ke klien) menentukan arahan untuk browser server proxy menengah / klien tentang bagaimana untuk menangani respon, dengan mengirimkan nilai yang berbeda untuk Cache-Controlbidang: private, public, no-cache, atau no-storedi header respon.

Tapi saya tidak mengerti mengapa kita perlu mengirim Cache-Controlatribut di header permintaan (klien ke server)?

Siswa
sumber

Jawaban:

137

Cache-Control: no-cacheumumnya digunakan dalam header permintaan (dikirim dari browser web ke server) untuk memaksa validasi sumber daya dalam proxy perantara. Jika klien tidak mengirim permintaan ini ke server, proksi perantara akan mengembalikan salinan konten jika masih segar (belum kedaluwarsa menurut Expireatau max-agebidang). Cache-Controlmengarahkan proksi ini untuk memvalidasi ulang salinan meskipun itu baru.

David
sumber
8
Mungkin sudah terlambat di sini, tapi kecuali apa kegunaan lainnya? Apakah bidang usia maks digunakan untuk tujuan apa pun?
Sam
Mengapa browser modern cenderung melakukan ini? Mereka tidak mempercayai proxy perantara meskipun mereka berperilaku sesuai dengan standar web ??
rogerdpack
1
@rogerdpack no, karena mereka benar - benar mempercayai mereka, jadi mereka mengirim tajuk yang mereka percayai akan merasa terhormat untuk menunjukkan bahwa mereka memiliki beberapa alasan khusus untuk membutuhkan kesegaran yang lebih besar daripada kebanyakan kebutuhan penggunaan.
Jon Hanna
1
@rogerdpack jika Anda baru saja melakukan sesuatu yang Anda tahu akan mengubah keadaan dan ingin mencerminkan itu, akan menjadi kasus klasik.
Jon Hanna
7
@JonHanna Mungkin Anda telah "menonaktifkan cache" diperiksa di alat Pengembang Chrome? : D
Gregory Magarshak
15

Klien dapat mengirim Cache-Controlheader dalam permintaan untuk meminta perilaku caching tertentu, seperti validasi ulang, dari server asal dan server proxy perantara di sepanjang jalur permintaan.

bdash
sumber
4

Selain jawaban di atas,
Mungkin ada pengaturan di mana cache chains diimplementasikan. Dalam hal ini jika permintaan datang ke cache pertama di mana tidak puas, itu mungkin pergi ke cache dirantai lebih lanjut.

Jadi untuk mendapatkan respons selalu dari server kami menyertakan kontrol-cache di header permintaan. Ini akan memastikan bahwa respons selalu dari server.

Loui
sumber
Anda mengatakan "Jadi untuk mendapatkan respons selalu dari server kami menyertakan kontrol-cache di header permintaan. Ini akan memastikan bahwa respons selalu dari server." Nilai apa dari header ini yang akan mencapai itu?
Don Hatch
Cache-Control: no-cacheakan memberi tahu proxy untuk memastikan bahwa respons divalidasi sepenuhnya.
mogsie