Rumah  >  Soal Jawab  >  teks badan

Apakah permintaan yang akan dijana oleh penyemak imbas "F5" dan "Ctrl + F5" penyegar semula?

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粉593649715P粉593649715347 hari yang lalu577

membalas semua(2)saya akan balas

  • P粉665679053

    P粉6656790532023-10-12 00:09:28

    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 - < kbd>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.

    balas
    0
  • P粉675258598

    P粉6752585982023-10-12 00:02:55

    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.

    balas
    0
  • Batalbalas