前端最基礎的就是 HTML+CSS+Javascript
。掌握了這三門技術就算入門,但也僅僅是入門,如今前端開發的定義已經遠遠不止這些。前端小課堂(HTML/CSS/JS
),本着提高技術水平,打牢基礎知識的中心思想,咱們開課啦(每週四)。html
HTTP2 即超文本傳輸協議 2.0。是由互聯網工程任務組(IETF)的 Hypertext Transfer Protocol Bis (httpbis)工做小組進行開發。主要是爲了優化性能,前身是 Google 的 SPDY 。是兼容 HTTP1.1的
HTTP1.1 發佈於 1999年。HTTP2 發佈於 2015年5月前端
HTTP/2 頭部壓縮(HPack)nginx
Nginx 1.9.5+ 支持 HTTP2, 高版本的 Nginx 不支持 IE6 的 HTTPS(大家沒看錯咱們還兼容 IE6)。算法
咱們能夠經過 Chrome 瀏覽器開發者工具的 Network 來查看當前請求使用的協議(Protocol 字段)
segmentfault
只能有一個
請求/響應。能夠複用
,再完成一個能夠繼續下一個keep-alive
來開啓長連接。也就是說完成請求處理之後 HTTP 鏈接會維持一段時間,這樣在這段時間內若是有新的請求就可以直接傳輸而不須要再次進行 TCP 創建鏈接了。多個
TCP 協議經過慢啓動機制、擁塞避免機制、加速遞減機制、快重傳和快恢復機制來共同實現擁塞控制。服務器
新建了個域名,開啓了 HTTP2微信
TCP 特性:可靠(知道接收方是否已接收)。對應 UDP(不可靠)。網絡
接收方未收到時,須要有重發機制。可是若是原本就是由於接收方負載太高,那麼就會形成網絡擁堵、甚至致使把接收方打掛。app
這個時候 TCP 要擁有控制流量的辦法。防止大量數據過來等待接收。
1988年,Van Jacobson 和 Michael J.Karels 撰文描述瞭解決問題的幾種算法:慢啓動、擁塞預防、快速重發和快速恢復。這幾種算法被寫進了 TCP 規範。
當網絡的負載超過了能處理的極限時,就會形成網絡擁塞。
TCP 經過動態維護窗口的大小實現以最大負載來傳輸數據。有兩種問題,網絡問題,接收方問題。
發送方維護兩個窗口:准許窗口(接收方容許的最大字節數)和擁塞窗口(Congestion Window) (發送方傳遞的字節數量)。最終發送的字節數量是兩個窗口的最小值。
當鏈接建好時,發送方將擁塞窗口初始化爲1,而後開始發送數據段。
若是數據段在定時器過時以前被確認,則將擁塞窗口的字節數翻倍(由於是翻倍,因此擁塞窗口會呈指數級增加,直到超時不被確認或者達到接收方窗口限制)。
若是數據段在定時器過時以前沒有被確認,則認爲網絡擁塞。這個時候發送的字節數會減半(閾值也會變化),這個時候還有個閾值的邏輯。
這個算法被稱爲慢啓動算法 ( Slow Start)
當 擁塞窗口 < 閾值 時,使用慢啓動算法
當 擁塞窗口 > 閾值 時,使用擁塞避免算法
當 擁塞窗口 = 閾值時,既可使用慢啓動算法,也可時使用擁塞避免算法。
擁塞避免算法的思路是讓擁塞窗口緩慢地增大,呈線性增加,即每完成一次,擁塞窗口增長1。