图解http协议头实例分析
下面獲取數(shù)個(gè)網(wǎng)站的首頁(yè)返回的http頭;進(jìn)行分析;
1 www.baidu.com
協(xié)議版本1.1,請(qǐng)求成功;
日期,時(shí)間;GMT格式(格林尼治時(shí)間);
Content-Type,表示后面的文檔屬于什么MIME類(lèi)型;
Content-Type: [type]/[subtype]; parameter
最常見(jiàn)的就是text/html,返回的內(nèi)容是文本類(lèi)型,這個(gè)文本又是HTML格式的。原則上瀏覽器會(huì)根據(jù)Content-Type來(lái)決定如何顯示返回的消息體內(nèi)容。?
Keep-Alive
在老的HTTP版本中,每個(gè)請(qǐng)求都將被創(chuàng)建一個(gè)新的客戶(hù)端->服務(wù)器的連接,在這個(gè)連接上發(fā)送請(qǐng)求,然后接收請(qǐng)求。這樣的模式有一個(gè)很大的優(yōu)點(diǎn)就是,它很簡(jiǎn)單,很容易理解和編程實(shí)現(xiàn);它也有一個(gè)很大的缺點(diǎn)就是,它效率很低,因此Keep-Alive被提出用來(lái)解決效率低的問(wèn)題。
Keep-Alive功能使客戶(hù)端到服務(wù)器端的連接持續(xù)有效,當(dāng)出現(xiàn)對(duì)服務(wù)器的后繼請(qǐng)求時(shí),Keep-Alive功能避免了建立或者重新建立連接。市場(chǎng)上 的大部分Web服務(wù)器,包括iPlanet、IIS和Apache,都支持HTTP Keep-Alive。對(duì)于提供靜態(tài)內(nèi)容的網(wǎng)站來(lái)說(shuō),這個(gè)功能通常很有用。但是,對(duì)于負(fù)擔(dān)較重的網(wǎng)站來(lái)說(shuō),這里存在另外一個(gè)問(wèn)題:雖然為客戶(hù)保留打開(kāi)的連 接有一定的好處,但它同樣影響了性能,因?yàn)樵谔幚頃和F陂g,本來(lái)可以釋放的資源仍舊被占用。當(dāng)Web服務(wù)器和應(yīng)用服務(wù)器在同一臺(tái)機(jī)器上運(yùn)行時(shí),Keep- Alive功能對(duì)資源利用的影響尤其突出。 此功能為HTTP 1.1預(yù)設(shè)的功能,HTTP 1.0加上Keep-Aliveheader也可以提供HTTP的持續(xù)作用功能。
指定“Vary: Accept-Encoding”標(biāo)頭,用一句話(huà)來(lái)說(shuō)明它的意義,就是“告訴代理服務(wù)器緩存兩種版本的資源:壓縮和非壓縮,這有助于避免一些公共代理不能正確地檢測(cè)Content-Encoding標(biāo)頭的問(wèn)題。”
接下來(lái)是6個(gè)Set-Cookie;
Set-Cookie由服務(wù)器發(fā)送,它包含在響應(yīng)請(qǐng)求的頭部中。它用于在客戶(hù)端創(chuàng)建一個(gè)Cookie。
expires=<date>: 設(shè)置cookie的有效期,如果cookie超過(guò)date所表示的日期時(shí),cookie將失效。
domain=<domain_name> :?
path=<some_path>:
注:臨時(shí)cookie(沒(méi)有expires參數(shù)的cookie)不能帶有domain選項(xiàng)。
當(dāng)客戶(hù)端發(fā)送一個(gè)http請(qǐng)求時(shí),會(huì)將有效的cookie一起發(fā)送給服務(wù)器。
如果一個(gè)cookie的domain和path參數(shù)和URL匹配,那么這個(gè)cookie就是有效的。
一個(gè)URL中包含有domain和path,可以參考http://www.w3school.com.cn/html/html_url.asp
secure ? : 表示cookie只能被發(fā)送到http服務(wù)器。
httponly : 表示cookie不能被客戶(hù)端腳本獲取到。
即打開(kāi)百度首頁(yè)后,你的機(jī)器上將存在6個(gè)Cookie;
通過(guò)設(shè)置P3P頭來(lái)實(shí)現(xiàn)跨域訪(fǎng)問(wèn)COOKIE;
Cache-control用于控制HTTP緩存(在HTTP/1.0中可能部分沒(méi)實(shí)現(xiàn),僅僅實(shí)現(xiàn)了Pragma: no-cache)
數(shù)據(jù)包中的格式:
Cache-Control: cache-directive
cache-directive可以為以下:
request時(shí)用到:
| "no-cache"
| "no-store"
| "max-age" "=" delta-seconds
| "max-stale" [ "=" delta-seconds ]
| "min-fresh" "=" delta-seconds
| "no-transform"
| "only-if-cached"
| "cache-extension"
response時(shí)用到:
| "public"
| "private" [ "=" <"> field-name <"> ]
| "no-cache" [ "=" <"> field-name <"> ]
| "no-store"
| "no-transform"
| "must-revalidate"
| "proxy-revalidate"
| "max-age" "=" delta-seconds
| "s-maxage" "=" delta-seconds
| "cache-extension"
部分說(shuō)明:
根據(jù)是否可緩存分為
Public ?指示響應(yīng)可被任何緩存區(qū)緩存。
Private ?指示對(duì)于單個(gè)用戶(hù)的整個(gè)或部分響應(yīng)消息,不能被共享緩存處理。這允許服務(wù)器僅僅描述當(dāng)用戶(hù)的
部分響應(yīng)消息,此響應(yīng)消息對(duì)于其他用戶(hù)的請(qǐng)求無(wú)效。
no-cache ?指示請(qǐng)求或響應(yīng)消息不能緩存(HTTP/1.0用Pragma的no-cache替換)
根據(jù)什么能被緩存
no-store ?用于防止重要的信息被無(wú)意的發(fā)布。在請(qǐng)求消息中發(fā)送將使得請(qǐng)求和響應(yīng)消息都不使用緩存。
根據(jù)緩存超時(shí)
max-age ?指示客戶(hù)機(jī)可以接收生存期不大于指定時(shí)間(以秒為單位)的響應(yīng)。
min-fresh ?指示客戶(hù)機(jī)可以接收響應(yīng)時(shí)間小于當(dāng)前時(shí)間加上指定時(shí)間的響應(yīng)。
max-stale ?指示客戶(hù)機(jī)可以接收超出超時(shí)期間的響應(yīng)消息。如果指定max-stale消息的值,那么客戶(hù)機(jī)可以
接收超出超時(shí)期指定值之內(nèi)的響應(yīng)消息。
Expires 表示存在時(shí)間,允許客戶(hù)端在這個(gè)時(shí)間之前不去檢查(發(fā)請(qǐng)求),等同max-age的
效果。但是如果同時(shí)存在,則被Cache-Control的max-age覆蓋。
格式:
Expires = "Expires" ":" HTTP-date
例如
Expires: Thu, 01 Dec 1994 16:00:00 GMT (必須是GMT格式)
Cxy_all,不知何解,看上去像個(gè)加密相關(guān)的東西;
Cache-Control,Expires,X-Powered-By,這三項(xiàng)屬于緩存控制;
Server域表明這個(gè)響應(yīng)報(bào)文是BWS服務(wù)器發(fā)出的,且版本是1.1
2 www. csdn.net
看下csdn的,與百度有不同;
Server:
OpenResty 是一個(gè)基于 Nginx 與Lua 的高性能 Web 平臺(tái),其內(nèi)部集成了大量精良的 Lua 庫(kù)、第三方模塊以及大多數(shù)的依賴(lài)項(xiàng)。
Etag - Last-Modified和Etags如何幫助提高性能?
把Last-Modified和ETags請(qǐng)求的http報(bào)頭一起使用,這樣可利用客戶(hù)端(例如瀏覽器)的緩存。因?yàn)榉?wù)器首先產(chǎn)生Last-Modified/Etag標(biāo)記,服務(wù)器可在稍后使用它來(lái)判斷頁(yè)面是否已經(jīng)被修改。本質(zhì)上,客戶(hù)端通過(guò)將該記號(hào)傳回服務(wù)器要求服務(wù)器驗(yàn)證其(客戶(hù)端)緩存。
20秒后重新建立TCP連接;
3?http://www.abchina.com/cn/(中國(guó)農(nóng)業(yè)銀行)
Server是IIS 7.5;
在客戶(hù)端創(chuàng)建一個(gè)Cookie;
總結(jié)
以上是生活随笔為你收集整理的图解http协议头实例分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jdbc template 学习总结
- 下一篇: 图解OpenLayers-2.13.1入