Apakah ada standar untuk tindakan F5dan Ctrl + F5pemicu apa di browser web?
Saya pernah melakukan percobaan di IE6 dan Firefox 2.x. The F5 penyegaran akan memicu permintaan HTTP yang dikirim ke server dengan If-Modified-Since
sundulan, sementara Ctrl + F5tidak akan memiliki sundulan tersebut. Dalam pemahaman saya, F5 akan mencoba untuk memanfaatkan konten yang di-cache sebanyak mungkin, sementara Ctrl + F5 itu dimaksudkan untuk meninggalkan semua konten yang di-cache dan hanya mengambil semua konten dari server lagi.
Tapi hari ini, saya perhatikan bahwa di beberapa browser terbaru (Chrome, IE8) tidak berfungsi dengan cara ini lagi. Keduanya F5dan Ctrl + F5kirim If-Modified-Since
tajuk.
Jadi bagaimana ini seharusnya bekerja, atau (jika tidak ada standar) bagaimana perbedaan browser utama dalam bagaimana mereka mengimplementasikan fitur-fitur refresh ini?
Jawaban:
Secara umum:
F5dapat memberi Anda halaman yang sama bahkan jika kontennya diubah, karena mungkin memuat halaman dari cache. Tetapi Ctrl- F5memaksa penyegaran cache, dan akan menjamin bahwa jika konten diubah, Anda akan mendapatkan konten baru.
sumber
Terserah browser tetapi mereka berperilaku dengan cara yang sama.
Saya telah menguji FF, IE7, Opera dan Chrome.
F5biasanya memperbarui halaman hanya jika itu diubah. Browser biasanya mencoba menggunakan semua jenis cache sebanyak mungkin dan menambahkan header "If-modified-since" ke permintaan. Opera berbeda dengan mengirim "Cache-Control: no-cache".
CTRL- F5digunakan untuk memaksa pembaruan, mengabaikan cache apa pun. IE7 menambahkan "Cache-Control: no-cache", seperti halnya FF, yang juga menambahkan "Pragma: no-cache". Chrome melakukan normal "Jika-dimodifikasi-sejak" dan Opera mengabaikan kunci.
Jika saya ingat dengan benar itu adalah Netscape yang merupakan browser pertama yang menambahkan dukungan untuk kontrol cache dengan menambahkan "Pragma: No-cache" ketika Anda menekan CTRL- F5.
Edit: Tabel yang diperbarui
Tabel di bawah ini diperbarui dengan informasi tentang apa yang akan terjadi ketika tombol refresh browser diklik (setelah permintaan oleh Joel Coehoorn ), dan header "max-age = 0" Cache-control-header.
Tabel diperbarui, 27 September 2010
Versi yang diuji:
Catatan:
Versi 3.0.6 mengirimkan I dan C, tetapi 3.1.6 membuka halaman di tab baru, membuat permintaan normal hanya dengan "I".
Versi 10.62 tidak melakukan apa-apa. 9.61 mungkin melakukan C kecuali itu salah ketik di tabel lama saya.
Catatan tentang Chrome 6.0.472 : Jika Anda melakukan reload paksa (seperti CTRL- F5) berperilaku seperti url ditandai secara internal untuk selalu melakukan reload paksa. Bendera dihapus jika Anda pergi ke bilah alamat dan tekan enter.
sumber
Saya telah menerapkan halaman yang kompatibel lintas browser untuk menguji perilaku refresh browser (di sini adalah kode sumber ) dan mendapatkan hasil yang mirip dengan @beberapa, tetapi untuk browser modern:
sumber
Setidaknya di Firefox (v3.5), cache tampaknya dinonaktifkan daripada hanya dibersihkan. Jika ada beberapa contoh dari gambar yang sama pada suatu halaman, itu akan ditransfer beberapa kali. Itu juga merupakan kasus untuk
img
tag yang ditambahkan kemudian melalui Ajax / JavaScript.Jadi jika Anda bertanya-tanya mengapa browser terus mengunduh ikon kecil yang sama beberapa ratus kali di situs Ajax auto-refresh Anda, itu karena Anda awalnya memuat halaman menggunakan CTRL- F5.
sumber
IE7 / 8/9 tampaknya berperilaku berbeda tergantung pada apakah halaman tersebut memiliki fokus atau tidak.
Jika Anda mengklik pada halaman dan CTRL+ F5maka "Kontrol Cache: no-cache" termasuk dalam header permintaan. Jika Anda mengklik di bilah Lokasi / Alamat kemudian tekan CTRL+ F5bukan.
sumber
Ketika pengguna menekan F5meskipun permintaan baru masuk ke server web dan mendapatkan respons untuk permintaan itu juga. Tetapi ketika header respons diurirkan, periksa informasi yang diperlukan dalam cache browser. Jika informasi yang diperlukan dalam cache belum kedaluwarsa maka informasi itu dikembalikan dari dalam cache itu sendiri.
Ketika pengguna mengklik CTRL- F5bahkan kemudian permintaan baru pergi ke server web dan mendapatkan respons. Tapi kali ini ketika header respons diurangkan, ia tidak memeriksa informasi yang diperlukan dalam cache, dan hanya membawa semua server formulir informasi yang diperbarui.
sumber