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