1、HTTP 協議概述web
HTTP協議歷史與標準編程
- HTTP/1.0: 1996年制定,支持多種請求方法,支持多媒體對象,獲得普遍應用緩存
- HTTP/1.0+: 支持持久鏈接、虛擬主機、代理鏈接等新特性,成爲非官方的事實標準性能優化
- HTTP/1.1: 1999年定製,校訂HTTP中的設計缺陷,性能優化,刪除一些很差的特性服務器
- HTTP-NG(或者HTTP/2.0):關注HTTP協議的性能優化以及更強大的服務邏輯遠程執行框架,研究工做仍在進行中框架
請求與響應流程編程語言
- Message,消息/報文,是在HTTP客戶端與服務器間傳遞的數據塊ide
- HTTP協議規定,消息必須符合特定的格式才能被彼此理解。性能
- Request Message: 客戶端向服務器發送的請求消息優化
- Response Message: 服務器端根據客戶端的請求消息,返回給客戶端的響應消息
2、HTTP消息
HTTP消息結構概述
- HTTP 消息是簡單的格式化數據塊
- 每一個消息都由三部分組成
- Start Line: 消息起始行,必需,消息基本描述信息
- Header: 消息頭部/報頭,可能有0-N個,消息詳細屬性
- Body: 消息主體,可選,包含數據的主體
- 起始行和消息頭是純ASCII字符,每行以CRLF結束
- 消息主體是一個可選的數據塊,其中的數據能夠爲空,或者是字符數據(如HTML、CSS、JavaScript等字符數據),或者二進制數據(如圖片、音頻、視頻等字節數據)
請求消息結構
- 客戶端發起的一個請求消息應符合以下格式要求
- 請求行:請求方法 空格 請求URL 空格 協議版本CRLF
- 請求頭部:可能包含0-N個請求頭(名/值對)CRLF
- 一個空白行CRLF
- 請求主體:可選,提交給服務器的請求數據
請求行與請求方法
- 請求消息請求服務器對資源進行一些操做
- 請求消息的起始行稱爲"請求行",包含以下三部分:
- 請求方法包括以下幾種
請求頭
- 請求頭可用於描述請求自己、客戶端、請求體的特徵
- 請求頭能夠分爲以下四種:
- 通用頭部:在請求消息或響應消息中均可以使用
- 請求專用頭部:只能出如今請求消息中
- 實體頭部:描述消息主體特徵
請求主體
- 請求主體中保存着客戶端提交給服務器,須要服務器加以處理(POST)或者保存(PUT)的數據
- 請求主體中可能包含字符數據,也可能包含字節數據
響應消息結構
- 服務器發返回給客戶端的一個響應消息應符合以下格式要求:
- 響應行:協議版本 空格 狀態碼 空格 緣由短語CRLF
- 響應頭部:可能包含0-N個響應頭CRLF
- 一個空白行CRLF
- 響應主體: 可選,返回給客戶端的響應數據,多是字符數據,也多是字節數據
響應狀態行與響應狀態碼
- 響應消息是服務器返回給客戶端的數據塊
- 響應消息的起始行稱爲"響應行",包含以下三部分:
響應頭
- 響應頭可用於描述響應自己、服務器、響應主體的特徵。
- 響應頭部分爲以下四種:
- 通用頭部: 在請求消息或響應消息中均可以使用
- 響應專用頭部: 只能出如今響應消息中
- 實體頭部:描述消息主體特徵
響應主體
- 響應主體中包含着服務器返回給客戶端的數據主體(GET/POST)
- 根據請求URL的不一樣,響應主體中多是字符數據(如HTML、CSS、JavaScript、JSON等字符),或者字節數據(圖片、音頻、視頻等各類字節數據)
內容類型與經常使用內容類型
- 實體頭部中的Content-Type頭可用於指定消息主體中數據的內容類型(MIME類型)
- 常見的MIME類型:
3、緩存控制相關頭部
緩存工做原理
- 客戶端能夠自動保存已經訪問過的文檔的副本,這些副本就稱爲"文檔緩存"
- 當客戶端再次發送針對同一個URL的請求時,若是本地有"已緩存的副本",就能夠直接從本地存儲設備而不是遠程服務器提取該文檔了
- 數據緩存有下列優勢:
- 減小了冗餘的數據傳輸,節省客戶端流量費用
- 緩解服務器貸款瓶頸的問題,服務器能夠節省出更多的帶寬
- 下降了對服務器的資源消耗和運行要求
- 下降了因爲遠距離兒形成的加載延時
- 緩存可否命中的完整流程:
Cache-Control頭
- Cache-Control:max-age頭部表示從服務器將文檔傳來之時起,能夠認爲此文檔處於新鮮狀態的秒數
- 服務器能夠請求客戶端不要緩存文檔,或者將最大使用期設置爲零,從而在每次訪問的時候都進行刷新
- 客戶端在事先沒有跟原始服務器進行再驗證的狀況下,不能提供對應數據的陳舊副本。但緩存仍然能夠提供新鮮的副本
Expires頭
- Expires頭部指定緩存的過時時間。HTTP設計者認爲,因爲不少服務器的時鐘都不一樣步,因此推薦最好用剩餘秒數來代替過時的絕對時間
- 若但願客戶端不要緩存資源,能夠將過時時間設置爲一個過去的時間,如:
控制HTTP頭部方法
- 能夠修改Web服務器的配置文件,設置默認響應頭部:
- 還能夠配置每一個HTML文件的HTTP-EQUIV標籤控制緩存:
- 除了上述兩種方法,還能夠在服務器端執行編程語言(如JSP、PHP、ASPX等)
4、Cookie相關頭部
Cookie工做原理
總結:本章內容主要介紹了 HTTP協議(HTTP協議概述、HTTP消息、緩存控制相關頭部、Cookie相關頭部)