摘要:總之,實(shí)體首部可以告知報文的接收者它在對什么進(jìn)行處理。與緩存相關(guān)的首部字段通用首部字段里請求首部字段里實(shí)體首部此處才開始正文和來規(guī)范。表示的是從服務(wù)器將文檔傳來之時起,可以認(rèn)為此文檔處于新鮮狀態(tài)的秒數(shù)剩下的都是緩存校驗(yàn)字段。
通用首部:有些首部提供了與報文相關(guān)的最基本的信息,它們被稱為通用首部。
請求首部:請求首部是只在請求報文中有意義的首部。
響應(yīng)首部
實(shí)體首部: 用來描述HTTP報文的負(fù)荷,由于請求和響應(yīng)報文中都可能包含實(shí) 體部分,所以在這兩種類型的報文中都可能出現(xiàn)這些首部。實(shí)體首部提供了有關(guān)實(shí)體及其內(nèi)容的大量信息,從有關(guān)對象類型的信息,到能夠?qū)?資源使用的各種有效的請求方法。總之,實(shí)體首部可以告知報文的接收者它在對什 么進(jìn)行處理。
1:通用首部字段里:
此處才開始正文~
Pragma和Expires來規(guī)范。雖然這兩個字段早可拋棄,但為了做http協(xié)議的向下兼容,你還是可以看到很多網(wǎng)站依舊會帶上這兩個字段。
Cache-Control所以這里不再介紹過時的東東啦,大家簡單了解這是關(guān)于緩存的就可以啦。
這是個通用首部字段, 其有很多值可以設(shè)置:
no-store:禁止緩存對響應(yīng)進(jìn)行復(fù)制
no-cache: 可以存儲在本地緩存區(qū),但是在與原始服務(wù)器驗(yàn)證新鮮度之前不能給客戶端使用。
max-age:表示的是從服務(wù)器將文檔傳來之時起,可以認(rèn)為此 文檔處于新鮮狀態(tài)的秒數(shù)
剩下的都是緩存校驗(yàn)字段。
這些字段都是根據(jù)修改時間來判斷文件是否有變動:
Last-Modified
If-Modified-Since: Last-Modified-value
If-Unmodified-Since: Last-Modified-value
只根據(jù)修改時間來判斷會有問題:如果在服務(wù)器上,一個資源被修改了,但其實(shí)際內(nèi)容根本沒發(fā)生改變,會因?yàn)長ast-Modified時間匹配不上而返回了整個實(shí)體給客戶端(即使客戶端緩存里有個一模一樣的資源)
為了解決這個問題,推出了Etag實(shí)體首部字段。服務(wù)器會通過某種算法,給資源計算得出一個唯一標(biāo)志符(比如md5標(biāo)志),在把資源響應(yīng)給客戶端的時候,會在實(shí)體首部加上“ETag: 唯一標(biāo)識符”一起返回給客戶端。比如:Etag: "5d8c72a5edda8d6a:3239"
如果服務(wù)器發(fā)現(xiàn)ETag匹配不上,那么直接以常規(guī)GET 200回包形式將新的資源(當(dāng)然也包括了新的ETag)發(fā)給客戶端;如果ETag是一致的,則直接返回304知會客戶端直接使用本地緩存即可。
那么客戶端是如何把標(biāo)記在資源上的 ETag 傳回給服務(wù)器的呢?請求報文中有兩個首部字段可以帶上 ETag 值:
If-None-Match: ETag-value
If-Match: ETag-value
需要注意的是,如果資源是走分布式服務(wù)器(比如CDN)存儲的情況,需要這些服務(wù)器上計算ETag唯一值的算法保持一致,才不會導(dǎo)致明明同一個文件,在服務(wù)器A和服務(wù)器B上生成的ETag卻不一樣。
附上參考鏈接:點(diǎn)擊跳轉(zhuǎn),以及《HTTP權(quán)威指南》
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/6873.html
瀏覽器緩存機(jī)制學(xué)習(xí)總結(jié) 最近在做一個考試系統(tǒng)時,由于經(jīng)常加載試卷或圖片等等靜態(tài)資源,抽空學(xué)習(xí)了一下緩存機(jī)制,在此記錄 為什么要使用緩存 1、通過HTTP協(xié)議,在客戶端和瀏覽器建立連接時需要消耗時間,而大的響應(yīng)需要在客戶端和服務(wù)器之間進(jìn)行多次往返通信才能獲得完整的響應(yīng),這拖延了瀏覽器可以使用和處理內(nèi)容的時間。這就增加了訪問服務(wù)器的數(shù)據(jù)和資源的成本,因此利用瀏覽器的緩存機(jī)制重用以前獲取的數(shù)據(jù)就變成了性...
摘要:源服務(wù)器以后也將不再對緩存服務(wù)器請求中提出的資源有效性進(jìn)行確認(rèn),且禁止其對響應(yīng)資源進(jìn)行緩存操作。換言之,該指令要求緩存服務(wù)器不重新加載響應(yīng),也不會再次確認(rèn)資源有效性。若發(fā)生請求緩存服務(wù)器的本地緩存無響應(yīng),則返回狀態(tài)碼。 HTTP 首部 一. HTTP 報文首部 1.HTTP 報文的結(jié)構(gòu):showImg(https://segmentfault.com/img/bV8xzC?w=613&...
摘要:源服務(wù)器以后也將不再對緩存服務(wù)器請求中提出的資源有效性進(jìn)行確認(rèn),且禁止其對響應(yīng)資源進(jìn)行緩存操作。換言之,該指令要求緩存服務(wù)器不重新加載響應(yīng),也不會再次確認(rèn)資源有效性。若發(fā)生請求緩存服務(wù)器的本地緩存無響應(yīng),則返回狀態(tài)碼。 HTTP 首部 一. HTTP 報文首部 1.HTTP 報文的結(jié)構(gòu):showImg(https://segmentfault.com/img/bV8xzC?w=613&...
閱讀 1121·2021-11-18 13:23
閱讀 823·2021-11-08 13:16
閱讀 965·2021-10-11 10:58
閱讀 3577·2021-09-22 15:26
閱讀 1846·2021-09-08 10:42
閱讀 1903·2021-09-04 16:45
閱讀 1807·2019-08-30 15:54
閱讀 2632·2019-08-30 13:45