在HTTP/1.1中ETag:“5e06b3b7-0”什么意思
- 教育綜合
- 2023-05-26 17:44:19
應(yīng)答報(bào)文 ETag什么意思
HTTP協(xié)議規(guī)格說明定義ETag為“被請(qǐng)求變量的實(shí)體值”。另一種說法是,ETag是一個(gè)可以與Web資源關(guān)聯(lián)的記號(hào)(token)。典型的Web資源可以一個(gè)Web頁(yè),但也可能是JSON或XML文檔。服務(wù)器單獨(dú)負(fù)責(zé)判斷記號(hào)是什么及其含義,并在HTTP響應(yīng)頭中將其傳送到客戶端,以下是服務(wù)器端返回的格式:ETag:"50b1c1d4f775c61:df3"客戶端的查詢更新格式是這樣的:If-None-Match : W / "50b1c1d4f775c61:df3"如果ETag沒改變,則返回狀態(tài)304然后不返回,這也和Last-Modified一樣。測(cè)試Etag主要在斷點(diǎn)下載時(shí)比較有用。expires 和 last-modified 與etag的區(qū)別
Last-Modified和Expires針對(duì)瀏覽器,而ETag則與客戶端無關(guān),所以可適合REST架構(gòu)中。
Last-Modified和Expires都應(yīng)用在瀏覽器端的區(qū)別是:Expires日期到達(dá)前,瀏覽器不會(huì)再發(fā)出新的請(qǐng)求,除非用戶按瀏覽器的刷新,所以,Last-Modified和Expires基本是降低瀏覽器向服務(wù)器發(fā)出請(qǐng)求的次數(shù),而ETag更側(cè)重客戶端和服務(wù)器之間聯(lián)系。
ETag定義:RFC2616(也就是HTTP/1.1)中沒有說明ETag該是什么格式的,只要確保用雙引號(hào)括起來就行了,所以可以用文件的hash,甚至是直接用Last-Modified,以下是服務(wù)器端返回的格式:
ETag: "50b1c1d4f775c61:df3" 客戶端向服務(wù)端發(fā)出的請(qǐng)求:If-None-Match:
W/"50b1c1d4f775c61:df3"
這樣,在J2EE/JavaEE服務(wù)器端,我們判斷如果ETag沒改變也是返回狀態(tài)304,起到類似Last-Modified和Expires效果。
Last-Modified和Expires區(qū)別是:如果過了Expires日期,服務(wù)器肯定會(huì)再次發(fā)出JSP完整響應(yīng);或者用戶強(qiáng)按瀏覽器的刷新按鈕,服務(wù)器也必須響應(yīng),apache等靜態(tài)頁(yè)面輸出也是這樣,但是這時(shí)動(dòng)態(tài)頁(yè)面就發(fā)揮了作用,如果JSP涉及的業(yè)務(wù)領(lǐng)域模型還是沒有更新,和原來一樣,那么就不必再將動(dòng)態(tài)頁(yè)面輸出了(瀏覽器客戶端已有一份),從Etag中獲取上次設(shè)置的領(lǐng)域模型對(duì)象修改日期,和現(xiàn)在內(nèi)存中領(lǐng)域模型(In-memory
Model)修改日期進(jìn)行比較,如果修改日期一致,表示領(lǐng)域模型沒有被更新過,那么返回響應(yīng)包304,瀏覽器將繼續(xù)用本地緩存的該頁(yè)面,再次節(jié)省了帶寬傳輸。
通過上述Expire和Etag兩次緩存,可以大大降低服務(wù)器的響應(yīng)負(fù)載,如果應(yīng)用不是狀態(tài)集中并發(fā)修改和實(shí)時(shí)輸出,而是分散修改然后分發(fā),如個(gè)人空間
個(gè)人博客(每個(gè)人只是修改它們自己的狀態(tài),不影響全局)或QQ類似個(gè)人工具,那么采取這樣的方法效果非常明顯,實(shí)際就是一種動(dòng)態(tài)頁(yè)面靜態(tài)化技術(shù),但比通常事先進(jìn)行頁(yè)面靜態(tài)化要靈活強(qiáng)大。
Http狀態(tài)碼是什么。都有哪些?什么意思?請(qǐng)?jiān)敿?xì)的說下?
HTTP狀態(tài)碼(HTTP Status Code)是用以表示網(wǎng)頁(yè)服務(wù)器HTTP響應(yīng)狀態(tài)的3位數(shù)字代碼。它由 RFC 2616 規(guī)范定義的,并得到RFC 2518、RFC 2817、RFC 2295、RFC 2774、RFC 4918等規(guī)范擴(kuò)展。 HTTP狀態(tài)碼全部以及代表的意思: 100 客戶端應(yīng)當(dāng)繼續(xù)發(fā)送請(qǐng)求。這個(gè)臨時(shí)響應(yīng)是用來通知客戶端它的部分請(qǐng)求已經(jīng)被服務(wù)器接收,且仍未被拒絕??蛻舳藨?yīng)當(dāng)繼續(xù)發(fā)送請(qǐng)求的剩余部分,或者如果請(qǐng)求已經(jīng)完成,忽略這個(gè)響應(yīng)。服務(wù)器必須在請(qǐng)求完成后向客戶端發(fā)送一個(gè)最終響應(yīng)。 101 服務(wù)器已經(jīng)理解了客戶端的請(qǐng)求,并將通過Upgrade 消息頭通知客戶端采用不同的協(xié)議來http是什么
HTTP:超文本傳輸協(xié)議(Hypertext Transfer Protocol) [編輯本段]HTTP是什么? 當(dāng)我們想瀏覽一個(gè)網(wǎng)站的時(shí)候,只要在瀏覽器的地址欄里輸入網(wǎng)站的地址就可以了,例如www.baidu.com,但是在瀏覽器的地址欄里面出現(xiàn)的卻是:http://www.baidu.com ,你知道為什么會(huì)多出一個(gè)“http”嗎? 我們?cè)跒g覽器的地址欄里輸入的網(wǎng)站地址叫做URL (Uniform Resource Locator,統(tǒng)一資源定位符)。就像每家每戶都有一個(gè)門牌地址一樣,每個(gè)網(wǎng)頁(yè)也都有一個(gè)Internet地址。當(dāng)你在瀏覽器的地址框中輸入一個(gè)URL或是單擊一個(gè)超級(jí)鏈接時(shí),URL就HTTP什么意思
超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。 簡(jiǎn)介 HTTP的發(fā)展是萬維網(wǎng)協(xié)會(huì)(World Wide Web Consortium)和Internet工作小組(Internet Engineering Task Force)合作的結(jié)果,(他們)最終發(fā)布了一系列的RFC,其中最著名的就是RFC 2616。RFC 2616定義了HTTP協(xié)議的我們今天普遍使用的一個(gè)版本——HTTP 1.1。 HTTP是一個(gè)客戶端和服務(wù)器端下一篇
返回列表