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