摘要:第一次請(qǐng)求了個(gè)文件再次訪問(wèn)的時(shí)候如果全部重新請(qǐng)求非常浪費(fèi)時(shí)間也很笨拙分析因?yàn)橛行┪募谟脩舻亩啻握?qǐng)求中都是相同的如果多次請(qǐng)求都重復(fù)請(qǐng)求這個(gè)文件無(wú)疑是一種浪費(fèi)那么就想到了緩存把資源緩存到本地再次請(qǐng)求的時(shí)候直接使用本地的緩存文件走極端把所有的文
第一次請(qǐng)求了 100 個(gè)文件, 再次訪問(wèn)的時(shí)候,如果全部重新請(qǐng)求, 非常浪費(fèi)時(shí)間, 也很笨拙.
分析:
因?yàn)橛行┪募? 在用戶的多次請(qǐng)求中, 都是相同的, 如果多次請(qǐng)求都重復(fù)請(qǐng)求這個(gè)文件, 無(wú)疑是一種浪費(fèi).
那么就想到了緩存: 把資源緩存到本地, 再次請(qǐng)求的時(shí)候直接使用本地的緩存文件.
走極端:
把所有的文件都緩存起來(lái).
分析:
這樣也不行, 因?yàn)樵谡?qǐng)求過(guò)來(lái)的 100 個(gè)文件中, 可能有一部分是長(zhǎng)久不變的, 有一部分是隔一段時(shí)間就變的, 還有的文件是每次都不一樣的.
那么怎么辦?
要區(qū)分這些文件, 緩存的主動(dòng)方(瀏覽器) 說(shuō): 我要知道我要不要緩存一個(gè)文件, 我要知道下次請(qǐng)求的時(shí)候?qū)τ? 某個(gè)文件我到底能不能直接用緩存, 還是需要重新請(qǐng)求.
OK.
服務(wù)器說(shuō): 那我跟你說(shuō)每個(gè)文件的你要不要緩存, 什么時(shí)候不能用緩存.
然后服務(wù)器就在響應(yīng)的時(shí)候, 添加一個(gè)響應(yīng)頭 Expires
類似這樣:Expires: Thu, 01 Dec 1994 16:00:00 GMT (必須是GMT格式)
瀏覽器得到這個(gè)文件之后, 先使用這個(gè)文件.
過(guò)了一會(huì)用戶重新請(qǐng)求了
瀏覽器把 Expires 標(biāo)記的時(shí)間 a, 和當(dāng)前請(qǐng)求的時(shí)間 b 做個(gè)對(duì)比, 如果是這樣 a....b // 說(shuō)明過(guò)期了, 那么就重新請(qǐng)求 b....a // 咦還沒(méi)過(guò)期, 還能吃
與 Expires 有同樣功能的還有 Cache-Control, Parama 等響應(yīng)頭
Cache-Control 是 HTTP 1.1 提出的, Expires 是 HTTP 1.0 提出的, 前者比后者優(yōu)先級(jí)高--在同時(shí)使用的時(shí)候.
...
然后, 瀏覽器發(fā)現(xiàn)不對(duì), 這個(gè)文件過(guò)期了, 我重新拿過(guò)來(lái)的怎么還是和過(guò)期的一樣, 你丫騙我.
服務(wù)器說(shuō): 那我能怎么辦, 你又要過(guò)期時(shí)間, 還不能不給, 那哪能每個(gè)文件的過(guò)期時(shí)間我都能精確算出來(lái), 那個(gè)文件明明我覺(jué)得
它經(jīng)常變, 誰(shuí)知道它一直都不變.
OK.
服務(wù)器給出了個(gè)解決方案:
你看這樣, 我呢, 把每個(gè)文件算出來(lái)一個(gè)值, 只要文件變化了, 這個(gè)值就會(huì)改變. 然后把這個(gè)值扔給你。 你如果發(fā)現(xiàn)緩存過(guò)期了, 請(qǐng)求的時(shí)候把這個(gè)值也給我. 我來(lái)看看這個(gè)值和我這邊的值是不是一樣的 如果是一樣的, 那么說(shuō)明這個(gè)文件沒(méi)有變對(duì)不對(duì), 那我就不給你文件了,給你一個(gè) 304 你再繼續(xù)使用緩存文件
這個(gè)值使用 Etag 來(lái)標(biāo)記,
客戶端在緩存過(guò)期重新請(qǐng)求的時(shí)候, 加上一個(gè)頭 If-None-Match:(Etag的值)
OK.
服務(wù)器又說(shuō)了, 哎這樣的話我還想到另外一種方案
我給你文件的時(shí)候標(biāo)記一下這個(gè)文件最后修改的時(shí)間, 你要是發(fā)現(xiàn)緩存過(guò)期了, 重新請(qǐng)求的時(shí)候把這個(gè)時(shí)間給我 我比較一下我這邊記錄的最新的文件更改時(shí)間, 如果兩個(gè)相同不就說(shuō)明文件沒(méi)改, 對(duì)不對(duì).
服務(wù)器給客戶端的時(shí)間叫: Last-Modified
客戶端返回過(guò)來(lái)的是: If-Modified-Since(Last-Modified 的值)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/61867.html
摘要:緩存詳解標(biāo)簽空格分隔緩存緩存之于性能優(yōu)化請(qǐng)求更快通過(guò)將內(nèi)容緩存在本地瀏覽器或距離最近的緩存服務(wù)器如,在不影響網(wǎng)站交互的前提下可以大大加快網(wǎng)站加載速度。強(qiáng)制緩存不發(fā)請(qǐng)求到服務(wù)器,協(xié)商緩存會(huì)發(fā)請(qǐng)求到服務(wù)器。參考瀏覽器協(xié)議緩存機(jī)制詳解 Web緩存詳解 標(biāo)簽(空格分隔): 緩存 緩存之于性能優(yōu)化 請(qǐng)求更快:通過(guò)將內(nèi)容緩存在本地瀏覽器或距離最近的緩存服務(wù)器(如CDN),在不影響網(wǎng)站交互的前提...
摘要:緩存詳解標(biāo)簽空格分隔緩存緩存之于性能優(yōu)化請(qǐng)求更快通過(guò)將內(nèi)容緩存在本地瀏覽器或距離最近的緩存服務(wù)器如,在不影響網(wǎng)站交互的前提下可以大大加快網(wǎng)站加載速度。強(qiáng)制緩存不發(fā)請(qǐng)求到服務(wù)器,協(xié)商緩存會(huì)發(fā)請(qǐng)求到服務(wù)器。參考瀏覽器協(xié)議緩存機(jī)制詳解 Web緩存詳解 標(biāo)簽(空格分隔): 緩存 緩存之于性能優(yōu)化 請(qǐng)求更快:通過(guò)將內(nèi)容緩存在本地瀏覽器或距離最近的緩存服務(wù)器(如CDN),在不影響網(wǎng)站交互的前提...
摘要:指示對(duì)于單個(gè)用戶的整個(gè)或部分響應(yīng)消息,不能被共享緩存處理。參考文章瀏覽器協(xié)議緩存機(jī)制詳解的實(shí)現(xiàn)原理寫給后端程序員的緩存原理介紹 說(shuō)說(shuō)web緩存 網(wǎng)上關(guān)于WEB緩存的文章很多,今天匯總一下。 為什么要用緩存 一般針對(duì)靜態(tài)資源如CSS,JS,圖片等使用緩存,原因如下: 請(qǐng)求更快:通過(guò)將內(nèi)容緩存在本地瀏覽器或距離最近的緩存服務(wù)器(如CDN),在不影響網(wǎng)站交互的前提下可以大大加快網(wǎng)站加載速度...
摘要:認(rèn)識(shí)緩存緩存原意是指可以進(jìn)行高速數(shù)據(jù)交換的存儲(chǔ)器。命中率指請(qǐng)求緩存次數(shù)與緩存返回正確結(jié)果次數(shù)的比例。如果相同,緩存直接使用副本相應(yīng)訪問(wèn),而不用向服務(wù)器發(fā)送請(qǐng)求緩存內(nèi)容應(yīng)用情形有完整的過(guò)期時(shí)間和壽命控制頭,并且沒(méi)過(guò)期。 1. 認(rèn)識(shí)緩存 緩存:原意是指可以進(jìn)行高速數(shù)據(jù)交換的存儲(chǔ)器。當(dāng)cpu處理數(shù)據(jù)時(shí),先到cache中尋找,如果數(shù)據(jù)已經(jīng)讀取,就不需要去RAM中讀取了 在web開(kāi)發(fā)中,緩存主要...
摘要:認(rèn)識(shí)緩存緩存原意是指可以進(jìn)行高速數(shù)據(jù)交換的存儲(chǔ)器。命中率指請(qǐng)求緩存次數(shù)與緩存返回正確結(jié)果次數(shù)的比例。如果相同,緩存直接使用副本相應(yīng)訪問(wèn),而不用向服務(wù)器發(fā)送請(qǐng)求緩存內(nèi)容應(yīng)用情形有完整的過(guò)期時(shí)間和壽命控制頭,并且沒(méi)過(guò)期。 1. 認(rèn)識(shí)緩存 緩存:原意是指可以進(jìn)行高速數(shù)據(jù)交換的存儲(chǔ)器。當(dāng)cpu處理數(shù)據(jù)時(shí),先到cache中尋找,如果數(shù)據(jù)已經(jīng)讀取,就不需要去RAM中讀取了 在web開(kāi)發(fā)中,緩存主要...
閱讀 2089·2021-11-23 09:51
閱讀 3697·2021-10-20 13:49
閱讀 1706·2021-09-06 15:13
閱讀 1816·2021-09-06 15:02
閱讀 3154·2021-09-02 15:11
閱讀 890·2019-08-29 15:37
閱讀 1732·2019-08-29 13:24
閱讀 2274·2019-08-29 11:28