Apakah ada standar untuk tindakan apa F5 dan Ctrl + F5 pemicu di web browser?
Saya pernah melakukan percobaan di IE6 dan Firefox 2.x. ≪kbd>F5 refresh akan memicu HTTP request dikirimkan ke server dengan sebuah If-Modified-Since
header, sementara Ctrl + F5 tidak akan memiliki header. Dalam pemahaman saya, F5 akan mencoba untuk memanfaatkan konten yang di-cache sebanyak mungkin, sementara Ctrl + F5 ini dimaksudkan untuk meninggalkan semua konten yang di-cache dan hanya mengambil semua konten dari server lagi.
Tapi hari ini, saya melihat bahwa dalam beberapa terbaru browser (Chrome, IE8) itu doesn't bekerja dengan cara ini lagi. Kedua F5 dan Ctrl + F5 mengirim If-Modified-Since
header.
Jadi bagaimana ini bekerja, atau (jika tidak ada standar) bagaimana browser utama berbeda dalam bagaimana mereka menerapkan fitur refresh?
Terserah browser tapi mereka berperilaku dengan cara yang sama.
Saya telah diuji FF, IE7, Opera, dan Chrome.
F5 biasanya update halaman ini hanya jika hal itu diubah. Browser biasanya mencoba untuk menggunakan semua jenis cache sebanyak mungkin dan menambahkan "If-modified-since" header permintaan. Opera berbeda dengan mengirimkan "Cache-Control: no-cache".
PILIH-F5 ini digunakan untuk memaksa update, mengabaikan cache. IE7 menambahkan "Cache-Control: no-cache", seperti halnya FF, yang juga menambahkan "Pragma: no-cache". Chrome tidak normal "If-modified-since" dan Opera mengabaikan kunci.
Jika aku ingat benar itu Netscape yang merupakan browser pertama untuk menambahkan dukungan untuk cache-control dengan menambahkan "Pragma: No-cache" ketika anda menekan PILIH-F5.
Edit: Diperbarui daftar
Tabel di bawah ini diperbarui dengan informasi tentang apa yang akan terjadi ketika browser's me-refresh-tombol diklik (berdasarkan permintaan Joel Coehoorn), dan "max-age=0" Cache-control header.
Diperbarui meja, 27 September 2010
┌────────────┬───────────────────────────────────────────────┐
│ UPDATED │ Firefox 3.x │
│27 SEP 2010 │ ┌────────────────────────────────────────────┤
│ │ │ MSIE 8, 7 │
│ Version 3 │ │ ┌─────────────────────────────────────────┤
│ │ │ │ Chrome 6.0 │
│ │ │ │ ┌──────────────────────────────────────┤
│ │ │ │ │ Chrome 1.0 │
│ │ │ │ │ ┌───────────────────────────────────┤
│ │ │ │ │ │ Opera 10, 9 │
│ │ │ │ │ │ ┌────────────────────────────────┤
│ │ │ │ │ │ │ │
├────────────┼──┼──┼──┼──┼──┼────────────────────────────────┤
│ F5│IM│I │IM│IM│C │ │
│ SHIFT-F5│- │- │CP│IM│- │ Legend: │
│ CTRL-F5│CP│C │CP│IM│- │ I = "If-Modified-Since" │
│ ALT-F5│- │- │- │- │*2│ P = "Pragma: No-cache" │
│ ALTGR-F5│- │I │- │- │- │ C = "Cache-Control: no-cache" │
├────────────┼──┼──┼──┼──┼──┤ M = "Cache-Control: max-age=0" │
│ CTRL-R│IM│I │IM│IM│C │ - = ignored │
│CTRL-SHIFT-R│CP│- │CP│- │- │ │
├────────────┼──┼──┼──┼──┼──┤ │
│ Click│IM│I │IM│IM│C │ With 'click' I refer to a │
│ Shift-Click│CP│I │CP│IM│C │ mouse click on the browsers │
│ Ctrl-Click│*1│C │CP│IM│C │ refresh-icon. │
│ Alt-Click│IM│I │IM│IM│C │ │
│ AltGr-Click│IM│I │- │IM│- │ │
└────────────┴──┴──┴──┴──┴──┴────────────────────────────────┘
Versi yang diuji:
Catatan:
Versi 3.0.6 mengirimkan saya dan C, tapi 3.1.6 membuka halaman di tab baru, membuat permintaan yang normal dengan hanya "aku".
Versi 10.62 tidak apa-apa. 9.61 mungkin melakukan C kecuali itu typo di meja tua.
Catatan tentang Chrome 6.0.472: Jika anda melakukan paksa reload (seperti PILIH-F5) berperilaku seperti url secara internal ditandai untuk selalu melakukan yang dipaksa reload. Bendera dibersihkan jika anda pergi ke address bar dan tekan enter.
Secara umum:
F5 dapat memberikan anda halaman yang sama bahkan jika konten berubah, karena dapat memuat halaman dari cache. Tapi Pilih-F5 memaksa refresh cache, dan akan menjamin bahwa jika konten berubah, anda akan mendapatkan konten baru.
I've dilaksanakan lintas-browser yang kompatibel halaman untuk menguji browser's refresh perilaku (di sini adalah source code) dan mendapatkan hasil yang sama dengan @beberapa, tapi untuk browser modern:
Setidaknya di Firefox (v3.5), cache tampaknya menjadi keluarga bukan hanya dibersihkan. Jika ada beberapa contoh gambar yang sama pada sebuah halaman, maka akan ditransfer beberapa kali. Hal ini juga sama untuk img
kategori yang ditambahkan kemudian melalui Ajax/JavaScript.
Jadi dalam kasus anda're-tanya mengapa browser terus men-download yang sama ikon kecil beberapa ratus kali pada auto-refresh situs Ajax, it's karena anda awalnya dimuat halaman menggunakan PILIH-F5.
IE7/8/9 tampaknya berperilaku berbeda tergantung pada apakah halaman yang memiliki fokus atau tidak.
Jika anda klik pada halaman dan PILIH+F5 maka "Cache-Control: no-cache" ini termasuk dalam header permintaan. Jika anda klik pada Lokasi/Address bar kemudian tekan PILIH+F5 ini isn't.
Ketika pengguna menekan F5 meskipun permintaan baru masuk ke web server dan mendapatkan respon untuk permintaan juga. Tapi ketika respon header Diurai memeriksa informasi yang diperlukan dalam cache browser. Jika informasi yang diperlukan dalam cache tidak kadaluarsa maka informasi tersebut dipulihkan dari dalam cache itu sendiri.
Ketika pengguna mengklik pada PILIH-F5 bahkan kemudian baru pergi permintaan ke web server dan mendapatkan respon. Tapi kali ini ketika respon header yang Diurai itu tidak memeriksa setiap informasi yang diperlukan dalam cache, dan membawa semua informasi yang diperbarui bentuk server saja.