HTTP 相应头相关
生活随笔
收集整理的這篇文章主要介紹了
HTTP 相应头相关
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
If-Modified-Since & If-None-Match
If-Modified-Since,和 Last-Modified 一樣都是用于記錄頁面最后修改時間的 HTTP 頭信息,只是 Last-Modified 是由服務(wù)器往客戶端發(fā)送的 HTTP 頭,而 If-Modified-Since 則是由客戶端往服務(wù)器發(fā)送的頭,可 以看到,再次請求本地存在的 cache 頁面時,客戶端會通過 If-Modified-Since 頭將先前服務(wù)器端發(fā)過來的 Last-Modified 最后修改時間戳發(fā)送回去,這是為了讓服務(wù)器端進行驗證,通過這個時間戳判斷客戶端的頁面是否是最新的,如果不是最新的,則返回新的內(nèi)容,如果是最新的,則 返回 304 告訴客戶端其本地 cache 的頁面是最新的,于是客戶端就可以直接從本地加載頁面了,這樣在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)就會大大減少,同時也減輕了服務(wù)器的負擔(dān)。
?
If-None-Match,它和ETags(HTTP協(xié)議規(guī)格說明定義ETag為“被請求變量的實體值”,或者是一個可以與Web資源關(guān)聯(lián)的記號)常用來判斷當(dāng)前請求資源是否改變。類似于Last-Modified和HTTP-IF-MODIFIED-SINCE。但是有所不同的是Last-Modified和HTTP-IF-MODIFIED-SINCE只判斷資源的最后修改時間,而ETags和If-None-Match可以是資源任何的任何屬性,不如資源的MD5等。
ETags和If-None-Match的工作原理是在HTTP Response中添加ETags信息。當(dāng)客戶端再次請求該資源時,將在HTTP Request中加入If-None-Match信息(ETags的值)。如果服務(wù)器驗證資源的ETags沒有改變(該資源沒有改變),將返回一個304狀態(tài);否則,服務(wù)器將返回200狀態(tài),并返回該資源和新的ETags。
??
ETag如何幫助提升性能??
聰明的服務(wù)器開發(fā)者會把ETags和GET請求的“If-None-Match”頭一起使用,這樣可利用客戶端(例如瀏覽器)的緩存。因為服務(wù)器首先產(chǎn)生ETag,服務(wù)器可在稍后使用它來判斷頁面是否已經(jīng)被修改。本質(zhì)上,客戶端通過將該記號傳回服務(wù)器要求服務(wù)器驗證其(客戶端)緩存。
其過程如下:
??????? 1.客戶端請求一個頁面(A)。?
??????? 2.服務(wù)器返回頁面A,并在給A加上一個ETag。?
??????? 3.客戶端展現(xiàn)該頁面,并將頁面連同ETag一起緩存。?
??????? 4.客戶再次請求頁面A,并將上次請求時服務(wù)器返回的ETag一起傳遞給服務(wù)器。?
??????? 5.服務(wù)器檢查該ETag,并判斷出該頁面自上次客戶端請求之后還未被修改,直接返回響應(yīng)304(未修改——Not Modified)和一個空的響應(yīng)體。
If-Modified-Since,和 Last-Modified 一樣都是用于記錄頁面最后修改時間的 HTTP 頭信息,只是 Last-Modified 是由服務(wù)器往客戶端發(fā)送的 HTTP 頭,而 If-Modified-Since 則是由客戶端往服務(wù)器發(fā)送的頭,可 以看到,再次請求本地存在的 cache 頁面時,客戶端會通過 If-Modified-Since 頭將先前服務(wù)器端發(fā)過來的 Last-Modified 最后修改時間戳發(fā)送回去,這是為了讓服務(wù)器端進行驗證,通過這個時間戳判斷客戶端的頁面是否是最新的,如果不是最新的,則返回新的內(nèi)容,如果是最新的,則 返回 304 告訴客戶端其本地 cache 的頁面是最新的,于是客戶端就可以直接從本地加載頁面了,這樣在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)就會大大減少,同時也減輕了服務(wù)器的負擔(dān)。
?
If-None-Match,它和ETags(HTTP協(xié)議規(guī)格說明定義ETag為“被請求變量的實體值”,或者是一個可以與Web資源關(guān)聯(lián)的記號)常用來判斷當(dāng)前請求資源是否改變。類似于Last-Modified和HTTP-IF-MODIFIED-SINCE。但是有所不同的是Last-Modified和HTTP-IF-MODIFIED-SINCE只判斷資源的最后修改時間,而ETags和If-None-Match可以是資源任何的任何屬性,不如資源的MD5等。
ETags和If-None-Match的工作原理是在HTTP Response中添加ETags信息。當(dāng)客戶端再次請求該資源時,將在HTTP Request中加入If-None-Match信息(ETags的值)。如果服務(wù)器驗證資源的ETags沒有改變(該資源沒有改變),將返回一個304狀態(tài);否則,服務(wù)器將返回200狀態(tài),并返回該資源和新的ETags。
??
ETag如何幫助提升性能??
聰明的服務(wù)器開發(fā)者會把ETags和GET請求的“If-None-Match”頭一起使用,這樣可利用客戶端(例如瀏覽器)的緩存。因為服務(wù)器首先產(chǎn)生ETag,服務(wù)器可在稍后使用它來判斷頁面是否已經(jīng)被修改。本質(zhì)上,客戶端通過將該記號傳回服務(wù)器要求服務(wù)器驗證其(客戶端)緩存。
其過程如下:
??????? 1.客戶端請求一個頁面(A)。?
??????? 2.服務(wù)器返回頁面A,并在給A加上一個ETag。?
??????? 3.客戶端展現(xiàn)該頁面,并將頁面連同ETag一起緩存。?
??????? 4.客戶再次請求頁面A,并將上次請求時服務(wù)器返回的ETag一起傳遞給服務(wù)器。?
??????? 5.服務(wù)器檢查該ETag,并判斷出該頁面自上次客戶端請求之后還未被修改,直接返回響應(yīng)304(未修改——Not Modified)和一個空的響應(yīng)體。
總結(jié)
以上是生活随笔為你收集整理的HTTP 相应头相关的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乐山市计算机学校太坑,乐山市计算机学校小
- 下一篇: JPA和事务管理