Apa yang terjadi jika Anda tidak mengatur header-kontrol-cache?

13

Apa yang terjadi jika Anda tidak mengatur cache-controltajuk? Apakah HTTP menentukan perilaku default yang harus diikuti klien atau terserah klien untuk memutuskan?

Di Chrome, saya telah melihat beberapa permintaan Javascript yang tidak memiliki cache-controltajuk sebagai 200 (from disk cache). Apakah Chrome mengoptimalkan ini?

Di IE, saya telah melihatnya muncul sebagai 304 (not modified).

Bagaimana saya memahami ini dengan lebih baik?

Nishant
sumber
1
"tidak ada header cache" yang berarti tidak ada header Kontrol-Cache, atau benar-benar tidak ada header cache? Kontrol cache bukan satu-satunya header yang memengaruhi caching. Sebagian besar server web akan mengirim tajuk Modifikasi Terakhir untuk aset statis seperti file Javascript.
Tim Fountain

Jawaban:

18

Jika tidak ada Cache-Controltajuk dan tidak ada Expirestajuk, tetapi ada Last-Modifiedtajuk (yang sebagian besar server web kirim secara default untuk aset statis), sebagian besar browser akan menggunakan kesegaran heuristik untuk menentukan berapa lama cache untuk aset itu.

Perhitungan khas untuk ini (yang disarankan oleh RFC 7234 ) adalah:

(current time - last modified time) / 10

Jadi, misalnya, jika waktu terakhir yang diubah untuk suatu gambar menyatakan itu terakhir kali diubah 60 hari yang lalu, browser mungkin memutuskan untuk dapat menggunakan versi yang di-cache secara lokal dari gambar itu selama 6 hari sebelum memeriksa versi baru.

Perhatikan bahwa dalam kebanyakan kasus, jika Anda menekan refresh, Anda memberi tahu browser untuk mengambil versi yang baru, jadi dalam situasi itu logika ini tidak akan berlaku.

Air Mancur Tim
sumber
1
Dan jika tidak ada Last-Modifiedtajuk?
bertonc96