HTTP(超文本傳輸協議:HyperText Transfer Protocol)是瀏覽器和服務器經過internet進行相互通訊的協議,也是網絡上應用最爲普遍的一種網絡協議。HTTP規範由World Wide Web Consortium(W3C)和Internet Engineering Task Force(IETF)進行編制,文檔是RFC2616。HTTP1.1是現在比較經常使用的版本,可是有些瀏覽器和服務器仍在使用老版本1.0。html
HTTP協議由請求和響應構成。瀏覽器端向特定的URL發送HTTP請求,URL對應的服務器通過處理請求,而後返回HTTP響應。和許多Internet服務同樣,HTTP協議一樣使用的是簡單的純文本格式。請求的類型比較多:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE,注意爲符合HTTP協議規範,請儘可能使用大寫。咱們常用到的類型,GET、POST請求,REST規範使用到了GET、PUT、DELETE、POST類型。前端
Get請求包含一個URL,還有headers也就是頭信息。HTTP響應包含狀態碼、頭和響應主體。下面是Firxbug中抓取的HTTP頭信息。web
先來看看request headers部分,accept-encoding表示可使用壓縮來減少響應的大小,前提是瀏覽器和服務器支持。這也是web優化最有效的技巧之一,HTML文件經過compressor格式化,再經過gzip進行壓縮,一般都能減小50%-60%的大小,別小看這50%,對於高訪問量的門戶網站來講,這但是白花花的銀子。另外,服務端進行了GZIP壓縮,能夠經過響應的content-encoding進行確認。上述圖片中的響應,並不存在這個字段,也就說明服務端並沒喲執行相應格式的壓縮。數據庫
目前,不管是前端仍是後端,仍是數據庫,隨處可見緩存技術,GET請求也使用了這技巧。而檢測緩存中的副本是否有效,一般是對比最後的修改時間。基於響應中的Last-Modified頭信息,能夠知道文件的最後的修改時間,請求端使用If-Modified-Since頭將最後修改時間發送給服務器。服務器端便會進行比較判斷,若是日期相同,就不會再發送響應主體,不然發送最新的響應主體,如此即可達到更快響應的性能優化效果。後端
說到了緩存,不得不說說緩存副本過時時間,顧名思義,副本的過時時間小於當下時間,也就是它已通過期,不能再使用,必須獲取服務器端最新的版本;不然,服務端返回狀態碼304,也便是沒有修改,而且緩存沒有過時,能夠正常使用,那麼瀏覽器將不會發出http請求,體如今firebug的樣式是,timeline是綠色的時間條。瀏覽器
在response headers中,expires表明要過時的具體時間,Cache-Control表示緩存能夠保存的時間,圖1爲21600秒。緩存
HTTP構建在Transmission Control Protocol(TCP)之上,一般,由HTTP客戶端發起一個請求,創建一個到服務器指定端口(默認是80端口)的TCP鏈接。HTTP服務器則在那個端口監聽客戶端的請求。一旦收到請求,服務器會向客戶端返回響應信息。在HTTP的早期實現中,每一個HTTP請求都要打開一個socket鏈接,這樣作的效率很是低下,由於一個web頁面中有許多HTTP請求指向同一個服務器。比較常見的,請求許多圖片通常指向同一個圖片服務器。這個時候,引入了持久鏈接來解決多對一請求服務器致使的socket鏈接效率低下的問題。它可使瀏覽器再一個單獨的鏈接上進行多個請求。瀏覽器和服務器使用Connection頭信息來表示Keep-Alive的支持。性能優化
固然Connection:Keep-Alive並非必需的,但大部分瀏覽器和服務器都包含它。服務器
這裏只是對HTTP進行一個簡單的概述,若是須要深刻學習,能夠閱讀本文參詳的文章或書籍。網絡
參詳信息:
一、HTTP規範:http://www.ietf.org/rfc/rfc2616.txt
二、MDN:https://developer.mozilla.org/en-US/docs/HTTP/Headers
三、重點推薦:《HTTP:The Definitive Guide》