一般情況下,瀏覽器發(fā)出的所有 HTTP 請求會首先被路由到瀏覽器的緩存,以查看是否緩存了可以用于實現(xiàn)請求的有效響應(yīng)。如果有匹配的響應(yīng),會直接從緩存中讀取響應(yīng),這樣就避免了網(wǎng)絡(luò)延遲以及傳輸產(chǎn)生的數(shù)據(jù)成本。然而,如果我們希望更新或廢棄已緩存的響應(yīng),該怎么辦?
假設(shè)我們已經(jīng)告訴訪問者某個 CSS 樣式表緩存長達 24 小時 (max-age=86400),但是設(shè)計人員剛剛提交了一個更新,我們希望所有用戶都能使用。我們該如何通知所有訪問者緩存的 CSS 副本已過時,需要更新緩存?
實際上以前沒有請求過該資源的新的用戶會得到更新的資源,但是請求過資源的用戶將在過期時間達到之前一直得到舊的被緩存的資源,直到他手動的去清理了瀏覽器的緩存。手動清理瀏覽器緩存這種事可能只有程序員才會做,那么我們要怎么做才能讓用戶得到更新后的資源呢?
其實很簡單,我們可以在資源的內(nèi)容更改后,更改資源的網(wǎng)址,強制用戶下載新響應(yīng)。比如在資源鏈接后添加參數(shù):