摘要:大部分服務器端的框架會有一些工具來讓這件事情變得簡單,可是,這種方式并不適用于一些文章或者博客之類的網(wǎng)站,這些網(wǎng)站的不能通過版本號來管理,而且內容也是經(jīng)常需要改變的。指不允許緩存。
本文譯自: 這里
本文已同步到我的博客
引言
緩存利用得當?shù)脑?,有很大益處,比如?jié)省帶寬,降低服務器壓力等,但是很多網(wǎng)站沒能夠很好地利用緩存,造成一些相互依賴的資源出現(xiàn)不同步的情況。
關于緩存的處理方案主要可以分為以下兩種:
方案一:資源內容保持不變+超長的max-ageCache-Control: max-age=31536000
這個url對應的資源永遠保持不變
瀏覽器/CDN可以將該資源緩存很久
對于沒有超過max-age的緩存內容可以直接使用,而不必再向服務器請求
如下圖所示:
在這種情況下,一個url對應的資源應該是一直保持不變的,如果我們想更新資源,只能通過更改url的方式來實現(xiàn):
可以看到,url中帶有一串碼,該碼是與資源內容相關的,可以是版本號,修改日期,或者文件內容的hash值。
大部分服務器端的框架會有一些工具來讓這件事情變得簡單,
可是,這種方式并不適用于一些文章或者博客之類的網(wǎng)站,這些網(wǎng)站的url不能通過版本號來管理,而且內容也是經(jīng)常需要改變的。
方案二:內容可變,每次都需要服務器再次校驗(revalidated)Cache-Control: no-cache
這個url對應的資源是可變的
本地緩存只有在服務器驗證過是最新的之后才可以使用
(譯者注:可參照304場景)
如下圖所示:
注意:no-cache并不是指不緩存,而是指在使用緩存之前,必須首先向服務器端確認資源是否為最新。
no-store指不允許緩存。同樣的must-revalidate并非是指必須重新驗證,它的意思是,只有當本地的緩存已經(jīng)超過最長緩存時間時,才需要重新驗證。
在這種場景下,可以在響應頭中添加ETag或者Last-Modified。這樣,當客戶端在下次請求的時候,就會在請求頭中帶上這些信息,分別對應的是If-None-Match和If-Modified-Since。服務器端根據(jù)該標識判斷資源是否為最新的,如果是,則返回304狀態(tài)碼。
這種設置總是會需要一次網(wǎng)絡請求的(來驗證本地的緩存資源是否為最新),因此相比于第一種方式,增加了網(wǎng)絡請求。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/61958.html
摘要:可能會延長這些的壽命假設你有以下的這個緩存了和如果命中了緩存,就從緩存中取,否則發(fā)起網(wǎng)絡請求如果我們更改了,我們會修改中的版本號,觸發(fā)的更新。 本文翻譯自:https://jakearchibald.com/201...這是一篇2016年的老文章。作者是Chrome瀏覽器的開發(fā)成員。 本文首發(fā)于公眾號:符合預期的CoyPan 使用正確的緩存可以帶來巨大的頁面性能上的收益,節(jié)省帶寬,減...
摘要:正在失業(yè)中的課多周刊第期我們的微信公眾號,更多精彩內容皆在微信公眾號,歡迎關注。若有幫助,請把課多周刊推薦給你的朋友,你的支持是我們最大的動力。是一種禍害譯本文淺談了在中關于的不好之處。淺談超時一運維的排查方式。 正在失業(yè)中的《課多周刊》(第3期) 我們的微信公眾號:fed-talk,更多精彩內容皆在微信公眾號,歡迎關注。 若有幫助,請把 課多周刊 推薦給你的朋友,你的支持是我們最大的...
摘要:正在失業(yè)中的課多周刊第期我們的微信公眾號,更多精彩內容皆在微信公眾號,歡迎關注。若有幫助,請把課多周刊推薦給你的朋友,你的支持是我們最大的動力。是一種禍害譯本文淺談了在中關于的不好之處。淺談超時一運維的排查方式。 正在失業(yè)中的《課多周刊》(第3期) 我們的微信公眾號:fed-talk,更多精彩內容皆在微信公眾號,歡迎關注。 若有幫助,請把 課多周刊 推薦給你的朋友,你的支持是我們最大的...
閱讀 2111·2021-11-11 16:54
閱讀 1079·2021-10-12 10:12
閱讀 413·2019-08-30 15:43
閱讀 682·2019-08-29 13:15
閱讀 1106·2019-08-29 13:12
閱讀 1559·2019-08-26 12:09
閱讀 1694·2019-08-26 10:24
閱讀 2304·2019-08-26 10:15