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