http協議總覽(前端建議收藏)

http解釋

全稱"超文本傳輸協議" ,解釋以下前端

  • 超文本 指代text,video,image 等二進制文件
  • 傳輸 顧名思義用於傳輸數據
  • 協議 互聯網中最基礎的協議,是一切協議的基礎,幾乎均可以與其搭上關係

http協議的優缺點

  1. 明文, 便可感知的,整個傳輸對於客戶端可見,對於開發者是優勢,方便調試,諸如抓包以及谷歌的調試工具。對於黑客來講是優勢,對於用戶是缺點,諸如公共場合的黑wifi
  2. 無狀態 即每次請求都要從新向服務器確認身份,自己是無感知的,直至後期加入了cookie,纔有改善
  3. 擴展性強 因爲http協議只是一個基礎規範,因此不少協議能夠在他的基礎上添磚加瓦 ,自己http協議只是規定了 請求方式+header+body 大體框架

http的鏈接方式

http鏈接的發展歷程以及緣由webpack

  1. 短鏈接(目前基本已基本爲長鏈接)
  • 短鏈接每一次鏈接都須要經歷TCP的三次握手,才能與服務器保持關聯,而這種方式無疑加大了服務器的壓力,每一次鏈接都是很是昂貴的
  1. 長鏈接
  • 長鏈接的原理是在例如nginx上,設置一個響應時間,在這個時間段服務器都會與客戶端保持關聯,不會像短連接同樣請求一次就要經歷TCP三次握手的過程,此操做大大減小了服務器的壓力
  1. 雙向通訊webSocket

在沒有出現webSocket以前,僅能使用輪詢的方式不斷髮起請求,十分費力不討好,webSocket是將TCP請求假裝成HTPP請求的作法,保證服務端能夠向客戶端主動發送數據nginx

cookie對於http協議的意義

  • 對於服務器而言更像是讓他有了記憶功能,不用每次請求都要去確認用戶身份,帶上cookie就可讓他知道這次用戶是什麼身份。諸如前端的seeion等瀏覽器存儲是讓方式更加多種多樣,結果都是讓服務器能夠記住訪問者的身份

http代理

http代理是對http請求擴展性強的一次很好的解釋,是對http請求"請求-應答"模型的擴展,對於代理服務器,客戶端視他爲服務端,對於真實服務器而言,代理服務器則爲客戶端web

  • 代理流程

avatar

常規流程

avatar

優化http請求之客戶端

  • 已知數據大小
  1. zip壓縮
  • 通常前端的webpack都會對文本使用zip壓縮,會有更好的效果,對音頻,視頻則效果不大
Response Headers:{
	 Content-Encoding:gizp
	}
複製代碼
  1. 分塊傳輸
  • 數據過大,服務端採用分片傳輸,記錄切片的數量以及切片索引,前端計算後傳輸給後端
Transfer-Encoding: chunked
複製代碼

http緩存加速

  • 初次請求會耗時較久,當瀏覽器發現緩存中沒有數據,會對服務器發起請求,如數據過期,或者設置的"max-age"到期,則從新發起請求,若緩存中已有數據,則不會額外發起請求減緩服務器壓力後端

  • 服務端可設置瀏覽器

max-age:no-store:不容許緩存,用於某些變化很是頻繁的數據,例如秒殺頁面;
max-age:no-cache:它的字面含義容易與 no-store 搞混,實際的意思並非不容許緩存,而是能夠緩存,但在使用以前必需要去服務器驗證是否過時,是否有最新的版本;
max-age:must-revalidate:又是一個和 no-cache 類似的詞,它的意思是若是緩存不過時就能夠繼續使用,但過時了若是還想用就必須去服務器驗證。

複製代碼
相關文章
相關標籤/搜索