搜尋

首頁  >  問答  >  主體

瀏覽器的"F5"和"Ctrl + F5"刷新會產生哪些請求?

F5Ctrl F5 在網頁瀏覽器中觸發的操作是否有標準?

我曾經在IE6和Firefox 2.x中做過實驗。 F5 重新整理將觸發傳送到伺服器的HTTP 要求,其中包含If-Modified-Since 標頭,而Ctrl F5 則不會有這樣一個標題。根據我的理解, F5 將嘗試盡可能利用快取內容,而Ctrl F5 旨在放棄所有快取內容,只是再次從伺服器檢索所有內容。

但今天,我注意到在一些最新的瀏覽器(Chrome、IE8)中它不再以這種方式工作。 F5Ctrl F5 都會傳送 If-Modified-Since 標頭。

那麼這應該如何工作,或者(如果沒有標準)主要瀏覽器在實現這些刷新功能方面有何不同?

P粉593649715P粉593649715430 天前648

全部回覆(2)我來回復

  • P粉665679053

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

    這取決於瀏覽器,但它們的行為方式相似。

    F5 通常只在頁面被修改時更新頁面。現代瀏覽器發送 Cache-Control: max-age=0 來告訴任何快取資源被視為新鮮的最長時間(相對於請求時間)。

    CTRL-F5 用於強制更新,忽略任何快取。現代瀏覽器發送 Cache-Control: no-cachePragma: No-cache

    如果我沒記錯的話,Netscape 是第一個透過在按下CTRL 時新增Pragma: 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                     │
    └─────────────────────────────────────────────────────────────────────────────────┘

    有關Chrome 6.0.472 的注意事項:如果您執行強制重新載入(例如CTRL-F5),則其行為就像URL 在內部一樣標記為始終強制重新載入。如果您轉到網址列並按 Enter 鍵,該標誌將被清除。

    回覆
    0
  • P粉675258598

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

    一般來說:

    即使內容發生更改,

    F5 也可能會為您提供相同的頁面,因為它可能會從快取載入頁面。但是 Ctrl F5 會強制刷新緩存,並保證如果內容發生更改,您將獲得新內容。

    回覆
    0
  • 取消回覆