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