Apakah permintaan yang akan dijana oleh penyemak imbas "F5" dan "Ctrl + F5" penyegar semula?
P粉593649715
P粉593649715 2023-10-11 10:38:51
0
2
639
Adakah terdapat standard untuk tindakan

F5 dan Ctrl+F5 pencetus dalam pelayar web?

Saya telah melakukan eksperimen dalam IE6 dan Firefox 2.x. Muat semula F5 akan mencetuskan permintaan HTTP kepada pelayan yang mengandungi pengepala If-Modified-Since, manakala Ctrl+F5 tidak akan mempunyai pengepala sedemikian. Dari pemahaman saya, F5 akan cuba memanfaatkan sebanyak mungkin kandungan cache, manakala Ctrl+F5 bertujuan untuk membuang semua kandungan cache dan hanya mengambil semula semuanya daripada pelayan.

Tetapi hari ini, saya perhatikan bahawa dalam beberapa penyemak imbas terkini (Chrome, IE8) ia tidak lagi berfungsi dengan cara ini. F5 dan Ctrl+F5 kedua-duanya menghantar pengepala If-Modified-Since.

Jadi, bagaimanakah ini sepatutnya berfungsi, atau (jika tiada standard) bagaimanakah pelayar utama berbeza dalam cara mereka melaksanakan fungsi muat semula ini?

P粉593649715
P粉593649715

membalas semua(2)
P粉665679053

Ia bergantung pada penyemak imbas, tetapi mereka berkelakuan dengan cara yang sama.

F5 Biasanya hanya mengemas kini halaman apabila ia telah diubah suai. Penyemak imbas moden menghantar Cache-Control: max-age=0 untuk memberitahu masa maksimum (berbanding dengan masa permintaan) bahawa mana-mana sumber cache akan dianggap segar.

CTRL-F5 digunakan untuk memaksa kemas kini, mengabaikan sebarang cache. Pelayar moden menghantar Cache-Control: no-cachePragma: No-cache

Jika saya ingat betul, Netscape ialah penyemak imbas pertama yang menambah sokongan kawalan cache dengan menambahkan apabila menekan CTRLPragma: No-cache - F5.

┌───────────┬──────────────┬─────┬─────────────────┬──────────────────────────────┐
│ Version 4 │      F5      │  R  │      CLICK      │ Legend:                      │
│2021 MAY 19├──┬──┬──┬──┬──┼──┬──┼──┬──┬──┬──┬──┬──┤ C = Cache-Control: no-cache  │
│           │  │S │C │A │A │C │C │  │S │C │A │A │C │ I = If-Modified-Since        │
│           │  │H │T │L │L │T │T │  │H │T │L │L │T │ M = Cache-Control: max-age=0 │
│           │  │I │R │T │T │R │R │  │I │R │T │T │R │ N = Not tested               │
│           │  │F │L │  │G │L │L │  │F │L │  │G │L │ P = Pragma: No-cache         │
│           │  │T │  │  │R │  │+ │  │T │  │  │R │+ │ - = ignored                  │
│           │  │  │  │  │  │  │S │  │  │  │  │  │S │                              │
│           │  │  │  │  │  │  │H │  │  │  │  │  │H │ With 'CLICK' I refer to a    │
│           │  │  │  │  │  │  │I │  │  │  │  │  │I │ mouse click on the browsers  │
│           │  │  │  │  │  │  │F │  │  │  │  │  │F │ refresh-icon.                │
│           │  │  │  │  │  │  │T │  │  │  │  │  │T │                              │
│           │  │  │  │  │  │  │  │  │  │  │  │  │  │ 1: Version 3.0.6 sends I     │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    and C, but 3.1.6 opens    │
│Brave 1.24 │M │CP│CP│- │- │M │CP│M │CP│CP│M │CP│CP│    the page in a new tab,    │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    making a normal request   │
│Chrome 1   │MI│MI│MI│- │- │MI│- │MI│MI│MI│MI│MI│N │    with only I.              │
│Chrome 6   │MI│CP│CP│- │- │MI│CP│MI│CP│CP│MI│- │N │ 2: Version 10.62 does        │
│Chrome 90  │M │CP│CP│- │- │M │CP│M │CP│CP│M │CP│CP│    nothing. 9.61 might do C  │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    unless it was a typo in   │
│Edge 90    │M │CP│CP│- │- │M │CP│M │CP│CP│M │CP│CP│    my old table.             │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤ 3: Opens the currernt tab in │
│Firefox 3.x│MI│- │CP│- │- │MI│CP│MI│CP│1 │M │MI│N │    a new tab, but does not   │
│Firefox 89 │M │- │CP│- │M │M │CP│M │CP│3 │M │M │3 │    refresh the page if it is │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    cached in the browser.    │
│MSIE 8, 7  │I │- │C │- │I │I │  │I │I │C │I │I │N │                              │
├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤                              │
│Opera 10, 9│C │- │- │2 │- │C │- │C │C │C │C │- │N │                              │
│Opera 76   │M │CP│CP│- │- │M │- │M │CP│CP│M │CP│CP│                              │
├───────────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──────────────────────────────┤
│                    https://stackoverflow.com/a/385491/36866                     │
└─────────────────────────────────────────────────────────────────────────────────┘

Nota pada Chrome 6.0.472: Jika anda melakukan muat semula paksa (cth. CTRL-F5), ia berkelakuan seolah-olah URL ditandakan secara dalaman seperti sentiasa paksa muat semula. Jika anda pergi ke bar alamat dan tekan Enter, bendera akan dikosongkan.

P粉675258598

Secara amnya:

Walaupun kandungan berubah,

F5 boleh memberi anda halaman yang sama kerana ia mungkin memuatkan halaman dari cache. Tetapi Ctrl+F5 akan memaksa penyegaran cache dan menjamin anda akan mendapat kandungan baharu jika ia berubah.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan