Apa perbedaan antara Kontrol-Cache: max-age = 0 dan no-cache?

Header Cache-Control: max-age=0 menyiratkan bahwa konten dianggap usang (dan harus dimuat u>Cache-Control: no-cache .

527
26 июня '09 в 4:34 2009-06-26 04:34 rubyruy diatur pada 26 Juni 2009 di 4:34 2009-06-26 04:34
@ 9 jawaban

Saya memiliki pertanyaan yang sama, dan saya menemukan informasi dalam pencarian saya (pertanyaan Anda adalah salah satu hasilnya). Itu yang saya putuskan ...

Ada dua sisi ke header Cache-Control . Satu sisi adalah di mana ia dapat dikirim oleh server web (juga dikenal sebagai "server sumber"). Sisi lain adalah tempat di mana ia dapat dikirim oleh browser (juga dikenal sebagai "agen pengguna").


Saat dikirim oleh server asal

Saya berasumsi bahwa max-age=0 hanya menginformasikan cache (dan agen pengguna) bahwa responsnya sudah ketinggalan zaman, dan karenanya mereka HARUS mengu>If-Not-Modified ) sebelum menggunakan salinan cache, kemudian karena no-cache memberi tahu mereka bahwa mereka HARUS mengu>14.9.1 Apa itu Cacheable :

tidak ada cache

... cache TIDAK HARUS menggunakan respons untuk memenuhi permintaan berikutnya tanpa server sumber yang berhasil. Ini memungkinkan server asal untuk mencegah caching bahkan dengan cache yang dikonfigurasikan untuk mengembalikan respons usang ke permintaan klien.

Dengan kata lain, cache kadang-kadang dapat menggunakan respons yang ketinggalan jaman (meskipun saya pikir mereka harus menambahkan header Warning ), tetapi no-cache mengatakan bahwa no-cache tidak diizinkan untuk menggunakan respons yang ketinggalan zaman, terlepas dari apakah Anda memerlukan tindakan FOLLOW -revalidate ketika statistik bisbol akan dihasilkan pada halaman, tetapi Anda ingin HARUS -validasi perilaku ketika Anda menghasilkan respons untuk membeli e-commerce.

Meskipun Anda benar dalam komentar Anda ketika mengatakan bahwa no-cache tidak boleh mencegah penyimpanan, sebenarnya ini mungkin perbedaan lain saat menggunakan no-cache . Saya menemukan sebuah halaman, Directive of Cache Management Demystified , yang menyatakan (Saya tidak bisa menjamin kebenarannya):

Dalam praktiknya, IE dan Firefox telah mulai memproses direktif tanpa-cache, seolah-olah itu telah memerintahkan browser untuk tidak melakukan cache halaman. Kami mulai mengamati perilaku ini sekitar setahun yang lalu. Kami menduga bahwa perubahan ini disebabkan oleh penggunaan direktif ini secara luas (dan salah) untuk mencegah caching.

...

Harap perhatikan bahwa baru-baru ini "manajemen cache: no-cache" juga mulai berlaku seperti arahan "no-store".

Selain itu, menurut saya Cache-Control: max-age=0, must-revalidate pada dasarnya berarti sama dengan Cache-Control: no-cache . Mungkin ini adalah cara untuk mendapatkan perilaku HARUS -revalidate no-cache , menghindari migrasi no-cache terlihat untuk melakukan hal yang sama dengan no-store (mis., Tidak ada caching sama sekali)?


Saat dikirim oleh agen pengguna

Saya percaya bahwa jawaban shahkalpesh berlaku untuk sisi agen pengguna. Anda juga dapat menonton 13.2.6 Disambiguating Multiple Responses .

Jika agen pengguna mengirim permintaan dengan Cache-Control: max-age=0 (alias. "Lewati kualifikasi u>If-Not-Modified ) sampai ke yang asli server. Jika jawabannya adalah 304 (tidak berubah), Anda dapat menggunakan objek yang di-cache.

Di sisi lain, mengirim permintaan menggunakan Cache-Control: no-cache (alias. "Melalui reboot") tidak dinilai terlalu tinggi, dan server TIDAK HARUS menggunakan salinan yang di-cache ketika merespons.

512
05 сент. Balas diberikan oleh Michael Krebs 05 Sep 2009-09-05 16:43 '09 pada 16:43 2009-09-05 16:43

usia maks = 0

Ini sama dengan mengklik Refresh, yang berarti beri saya salinan terakhir jika saya sudah memiliki salinan terakhir.

tanpa cache

Ini menahan Shift dengan menekan Refresh, yang berarti hanya mengu>

35
12 мая '15 в 6:59 2015-05-12 06:59 jawabannya diberikan oleh Cheng pada 12 Mei '15 pukul 6:59 2015-05-12 06:59

Pertanyaan lama sekarang, tetapi jika orang lain menemukan jalur pencarian ini, seperti yang saya lakukan, tampaknya IE9 akan menggunakan ini untuk mengubah perilaku sumber daya saat menggunakan tombol Kembali dan Maju. Ketika max-age = 0 digunakan, browser akan menggunakan versi terbaru saat melihat sumber daya saat mengklik tombol Kembali / Maju. Jika tidak ada cache yang digunakan, sumber daya akan dipindahkan.

Informasi lebih lanjut tentang caching IE9 dapat ditemukan di pesan msgd ini untuk caching .

30
27 нояб. jawabannya diberikan oleh El Yobo 27 November. 2010-11-27 12:13 '10 pada 12:13 2010-11-27 12:13

Dalam pengujian saya baru-baru ini dengan IE8 dan Firefox 3.5, keduanya nampaknya sesuai dengan RFC. Namun, mereka dibedakan oleh "keramahan" mereka dengan server sumber. IE8 mempertimbangkan respons no-cache dengan semantik yang sama dengan max-age=0,must-revalidate . Namun, Firefox 3.5 tampaknya memperlakukan no-cache sebagai setara dengan no-store , yang menghasilkan kinerja dan penggunaan bandwidth yang buruk.

Squid Cache secara default tidak pernah menyimpan apa pun dengan header no-cache , seperti Firefox.

Saran saya adalah mengatur public,max-age=0 untuk sumber daya tidak sensitif yang Anda ingin memeriksa kesegaran dengan setiap permintaan, tetapi masih memungkinkan Anda untuk menggunakan cache kinerja dan bandwidth. Untuk posisi pengguna dengan akuntansi yang sama, gunakan private,max-age=0 .

Saya benar-benar akan menghindari penggunaan no-cache , karena tampaknya telah diwarisi oleh beberapa browser dan cache populer untuk fungsional yang setara dengan no-store .

Juga, jangan meniru Akamai dan Limelight. Meskipun mereka pada dasarnya menggunakan array caching sebagai bisnis inti mereka dan perlu menjadi ahli, mereka sebenarnya tertarik untuk mendapatkan lebih banyak data dari jaringan mereka. Google mungkin bukan pilihan yang baik untuk dicontoh. Tampaknya mereka menggunakan max-age=0 atau no-cache secara acak tergantung pada sumber daya.

23
26 янв. jawabannya diberikan oleh rmalayter 26 Jan 2010-01-26 02:06 '10 pada 2:06 2010-01-26 02:06
 usia maks Max-age = 0 directive, untuk memvalidasi u>  HARUS TIDAK termasuk min-fresh,    maks-basi, atau maks-usia.

milik: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.4

Jangan menganggapnya sebagai jawaban - saya harus membacanya untuk memahami penggunaan yang sebenarnya :)

18
26 июня '09 в 4:44 2009-06-26 04:44 jawabannya diberikan shahkalpesh 26 Juni 2009 di 4:44 2009-06-26 04:44

Saya bukan spesialis caching, tetapi Mark Nottingham. Ini dokumen caching- nya. Ini juga memiliki tautan yang sangat baik di bagian "Tautan".

Berdasarkan pembacaan saya terhadap dokumen-dokumen ini, tampaknya max-age=0 dapat memungkinkan cache untuk mengirim respons cache ke permintaan yang datang pada "waktu yang sama", di mana "waktu yang sama" berarti cukup dekat satu sama lain, mereka terlihat pada saat bersamaan, tetapi no-cache tidak.

11
26 июня '09 в 4:59 2009-06-26 04:59 jawabannya diberikan oleh Hank Gay 26 Juni 2009 di 4:59 2009-06-26 04:59

Ngomong-ngomong, perlu dicatat bahwa beberapa perangkat seluler, khususnya produk Apple, seperti iPhone / iPad, benar-benar mengabaikan tajuk, seperti tidak ada cache, tidak ada toko, Kedaluwarsa: 0 atau sesuatu yang lain yang dapat Anda coba untuk mendapatkannya Jangan u>

Itu tidak menyebabkan kami sakit kepala, karena kami mencoba menyelesaikan masalah dengan iPad, mengatakan bahwa kami tidur di halaman yang mereka capai melalui proses form, katakanlah, >

Saya hanya menambahkan ini jika seseorang datang dan tidak dapat memahami mengapa mereka memiliki kesalahan dalam sesi dengan fitur-fitur dari iPhone dan iPad, yang, tampaknya, sebenarnya merupakan pe>

Saya melakukan pengujian debugger yang cukup luas dengan masalah ini, dan ini adalah kesimpulan saya, perangkat sepenuhnya mengabaikan arahan ini.

Bahkan dengan penggunaan reguler, saya menemukan bahwa beberapa ponsel juga tidak dapat sepenuhnya memeriksa versi baru, katakan Kedaluwarsa: 0, dan kemudian periksa tanggal modifikasi terbaru untuk menentukan apakah harus menerima yang baru.

Itu tidak terjadi, jadi saya harus menambahkan string kueri ke file css / js yang saya perlukan untuk pembaruan yang dipaksakan, yang membuat perangkat seluler bodoh berpikir bahwa ini adalah file yang tidak ada, misalnya: my.css? v = 1, lalu v = 2 untuk memperbarui css / js. Cukup banyak bekerja.

Selain itu, browser kustom juga, jika Anda membiarkannya secara default, mulai 2016, seperti yang saya temukan terus-menerus (kami membuat banyak perubahan dan pembaruan di situs kami), juga tidak dapat memeriksa tanggal terakhir yang dimodifikasi dalam file tersebut, tetapi metode string kueri memperbaiki masalah ini . Inilah yang saya perhatikan dengan klien dan orang-orang kantor, yang, sebagai aturan, menggunakan pengaturan standar pengguna standar di browser mereka dan tidak menyadari masalah caching menggunakan css / js, dll. Mereka hampir selalu tidak bisa mendapatkan yang baru css / js ketika mengubah, yang berarti bahwa nilai default untuk peramban mereka, terutama MSIE / Firefox, tidak melakukan apa yang diperintahkan, mereka mengabaikan perubahan dan mengabaikan tanggal modifikasi terakhir dan tidak memeriksa, bahkan dengan tanggal kedaluwarsa: 0 jelas.

Itu adalah topik yang bagus dengan banyak informasi teknis, tetapi juga penting untuk dicatat betapa buruknya dukungan materi ini terutama pada perangkat seluler. Setiap beberapa bulan saya harus menambahkan lebih banyak tingkat perlindungan terhadap penolakan mereka untuk mengikuti perintah header yang mereka terima, atau untuk menafsirkan perintah ini dengan benar.

9
13 апр. jawabannya diberikan Lizardx 13 April. 2016-04-13 22:49 '16 pada 10:49 2016-04-13 22:49

Ini adalah pohon keputusan kecil, yang saya harap akan menjelaskan perbedaannya.

2019

19 апр. Jawabannya diberikan pravdomil 19 April. 2018-04-19 18:46 '18 jam 6:46 malam 2018-04-19 18:46

Perbedaannya adalah bahwa tanpa cache (tidak menyimpan di Firefox) mencegah caching apa pun. Ini dapat berguna untuk mencegah halaman dengan konten yang dilindungi agar tidak ditulis ke disk dan untuk halaman yang harus selalu diperbarui, bahkan jika mereka dikunjungi kembali menggunakan tombol Kembali.

max-age = 0 menunjukkan bahwa entri cache kedaluwarsa dan perlu diperiksa u>

Biasanya browser tidak akan menghapus entri cache kadaluarsa kecuali jika mereka mengembalikan ruang untuk konten yang lebih baru ketika cache browser penuh. Menggunakan no-store, no-cache memungkinkan Anda untuk menghapus entri cache secara eksplisit.

0
26 июня '09 в 15:51 2009-06-26 15:51 jawabannya diberikan HttpWatchSupport 26 Juni 2009 di 15:51 2009-06-26 15:51

Pertanyaan lain tentang tag atau Ajukan Pertanyaan