1,HTTP請求
協議名://主機名:端口號/資源URI
/*******************************
GET /index.html HTTP/1.1
Host: localhost:8088
connection: Keep-Alive
******************************/
2,request header
Host 請求頭,標名請求主機器名,可爲IP也可爲域名,http1.1後強制使用,用此請求信息,可在服務端作WEB虛擬機,實現一機多WEB服務
Content-Length, 請求、響應體的數據字節大小
Accept-Encoding, 請求頭,可接受的文本壓縮算法,如: gzip, deflate
Accept-Language,請求頭,支持語言,客戶端瀏覽器的設置,如:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
User- Agent, 請求頭,瀏覽器信息,如:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20100101 Firefox/12.0,細心會註冊到IE也會用Mozilla,這是一個歷史問題,早期WEB服務器貌似有問題,只支持Mozilla,微軟IE作爲 後起之秀只能假裝成Mozilla
Cookie, 請求頭,服務器或客戶端在上次設置的COOKIE,包括做用域名(.360buy.com),過 期時間,鍵與值。大部分WEB服務器都會在第一次訪問時在響應頭上加Set-Cookie, (指某些網站爲了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(一般通過加密))如:BAIDUID=49415814CDBBB4CE65EC50EE4BB65E9A:FG=1; expires=Wed, 07-Nov-42 07:03:34 GMT; path=/; domain=.baidu.com
Referer, 從一個鏈接打開一個新頁面,新頁面的請求通常會加此信息,標名是從哪裏跳過來的,全部的頁面的打開歷史鏈就可被挖掘出來,有利於分析用戶行爲與CPS分紅
3,reponse header
Content-Type, 響應的數據類型:text/html;charset=gbk
Content-Length, 響應的數據體大小
Content-Encoding, 若是爲文本、HTML信息,則使用的編碼方式
Date, 當前服務器日期
Server, 服務器名
Set- Cookie, 第一次訪問或服務設置COOKIE時,響應頭裏會有此信息, 如,BAIDUID=49415814CDBBB4CE65EC50EE4BB65E9A:FG=1; expires=Wed, 07-Nov-42 07:03:34 GMT; path=/; domain=.baidu.com
4, Cache-Control , Expires
控制緩存的兩個響應頭,若是都出如今響應頭裏,按Cache-Controler計算
Cache-Control, 爲響應頭信息,取值爲:
Public, 當前系統任何登陸的用戶均可使用
Private, 當前系統登陸的此用戶進行緩存
no-cache, 不作緩存
max-age, 緩存指定秒數,如Cache-control: max-age=5,表示當訪問此網頁後的5秒內再次訪問不會去服務器
Expires, 爲響應頭,Http1.1以上版本,與Max-Age同樣,用來控制緩存的失效日期
5, Last-Modified, If-Modified-Since
Last-Modified, 爲響應頭,標名本資料上一次的修改時間
If-Modified-Since,爲請求頭,把上一次請求的Last-Modified日期信息爲值進行請求,若是服務器判斷Last-Modified時間與服務器一致則直接返回304,瀏覽器使用本地緩存進行顯示。通常用來節省帶寬,加速請求與顯示。
6,ETag + If-Match
一樣是緩存策略,作爲以上的補充
ETag, 爲響應頭,在 http1.1中規定爲一個字串,具體格式未定義,用來校驗客戶端緩存
If-Match, 爲請求頭信息,把上一次請求響應的Etag帶上進行請求,服務端的處理方法比較靈活,作爲Cache-Control,Expires,Last-Modified的補充,可不以時間爲參考的緩存策略。
Apache默認對html的Etag取值爲INode+Mtime+Size
如:Etag"2e681a-6-5d044840"1
用途:
a,僅僅改變的修改時間,但內容未作修改
b,修改很是頻繁,一秒內修改千次,但Cache-Control與Last-Modified,只能控制在秒級,這是對控制力度的進一步提高
c,某些服務器不能精確的獲得文件的最後修改時間,個例,咱們使用的服務器都已支持,因此所用很少
7,Connection Keep-Alive
HTTP協議採用TCP協議,每次頁面資源請求都被規定爲一次鏈接,而每次鏈接的TCP三次握手關閉時的四次通訊與端口滯留等待防止數據包未傳送,
而每一個TCP都是一個打開文件IO句柄數,Unix/Linux又對這個作了嚴格的限制。
一個網頁,大量資源文件(html\css\javascript\image)須要加載量時須要大數據量的TCP鏈接,爲了減小socket鏈接數提供了KeepAlive,使一個tcp鏈接可重複使用。
事實也證實用Keep-Alive速度也更快(但移動客戶端接口開發會關掉此屬性)。
8,Range: 10-100
取信息的一部分,斷點下載時經常使用
9,返回狀態碼
200,返回成功
501,服務器內容錯誤
304,使用本地緩firebug
404,資源沒有找到
10,http 協議監察工具:
Firebox: httpfox、live http header,firebug
IE: httpwatch、iehttpheaderjavascript