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