HTTP/2 學習筆記

創建連接

TCP三次握手:包括客戶端想服務端發起一個SYN包,接著服務端返回對應SYN的ACK響應以及新的SYN包,然后客戶端返回對應的ACK.
如果客戶端發起HTTPS連接,它還需要進行傳輸層安全協議(TLS)協商;TLS用來取代安全套接層.


HTTP1的問題

1.隊頭阻塞:允許一次發送一組請求,但是只能按照發送順序一次接受響應.現代瀏覽器一般針對單個域名開啟6個連接.
2.使用擁塞接口:在接受方確認數據包之前,發送方可以發出的TCP包的數量.慢啟動:每次響應成功則加倍發送的數據包,失敗則減半發送的數據包.
3.消息首部臃腫
4.受限的優先級設置
5.第三方資源


Web性能的最佳實踐(HTTP1)
1.DNS查詢優化
a.限制不同域名的數量
b.保證低限度的解析延遲
c.在主體頁面HTML或響應中利用DNS預取指定的域名如:
<link rel="dns-prefetch" href="//ajax.googleapis.com>
2.優化TCP連接
a.利用preconnect指令,連接在使用之前就已經建立好.如:
<link rel="preconnect" href="//fonts.example.com" crossorigin>
b.借助CDN,在距離請求用戶很近的邊緣端點上,請求就可以獲得響應.
3.避免重定向
4.客戶端緩存

瀏覽器支持

任何不支持HTTP2的客戶端都將簡單的退回到HTTP1


HTTP1的優化,對于HTTP2的建議:

1.資源合并:在HTTP2下并非必要.
2.去除域名拆分:域名拆分是為了利用瀏覽器對每個域名開啟多個連接的能力,以便實現資源的并行下載,繞過http1的串行化下載的限制.而http2的設計意圖是采用多路復用,充分利用單個socket連接,而拆分域名會違背這種意圖.
3.去除禁用cookie:應該避免為這些資源單位設立域名,因為http2采用了HPACK算法首部壓縮,會顯著減少巨型cookie(尤其是當它們在先后請求之間保持不變)的字節數.與此同時,禁用cookie的域名需要額外的主機名稱,這意味著將開啟更多的連接,與http2意圖違背.


HTTP2幀類型

0x0 DATA:傳輸流的核心內容
0x1 HEADERS:包含http首部,和可選的優先級參數
0x2 PRIORITY:指示或更改流的優先級和依賴
0x3 RST_STREAM:允許一端停止流
0x4 SETTINGS:協商連接級參數
0x5 PUSH_PROMISE:提示客戶端,服務器要推送些東西
0x6 PING:測試連接可用性和往返延時(RTT)
0x7 GOAWAY:告訴另一端,當前端已結束
0x8 WINDOW_UPDATE:協商一端將要接收多少字節
0x9 CONTINUATION:用以擴展HEADER數據塊


http2優先級

1.依賴關系:為客戶端提供了一種能力,通過指明某些對象對另一些對象有依賴,告知服務器這些對象應該優先傳輸.
2.權重:讓客戶端告訴服務器如何確定具有共同依關系的對象的優先級.


服務器推送局限

https2中,服務器會在第一次請求中就向客戶端推送信息,這樣雖然可以節省時間,不過也可能推送了客戶端不需要的信息.客戶端確實可以發送RST_STREAM幀來拒絕服務器的PUSH_PROMISE幀,但是RST_STREAM并不會即可到達,所以服務器還是會發送一些多余的信息.


首部壓縮HPACK,為什么不是GZIP?

因為GZIP也有泄露加密信息的風險.比如GRIME攻擊,攻擊者在請求中添加數據,觀察壓縮加密后的數據量是否會小于預期.如果變小了,攻擊者就知道注入的文本和請求中的其他內容(比如私有的會話cookie)有重復.在很短的時間內,經過加密的數據內容就可以全部搞清楚.


http2比http1多做的工作:

1.窗口大小調節
2.依賴樹構建
3.維持首部信息的靜態/動態表
4.壓縮/解壓縮首部
5.優先級調整(http2允許客戶端多次調整單一請求的優先級)
6.預先推送客戶端尚未請求的數據流


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389684.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389684.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389684.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL的變量分類總結

在MySQL中&#xff0c;my.cnf是參數文件&#xff08;Option Files&#xff09;&#xff0c;類似于ORACLE數據庫中的spfile、pfile參數文件&#xff0c;照理說&#xff0c;參數文件my.cnf中的都是系統參數&#xff08;這種稱呼比較符合思維習慣&#xff09;&#xff0c;但是官方…

859. 親密字符串

859. 親密字符串 給你兩個字符串 s 和 goal &#xff0c;只要我們可以通過交換 s 中的兩個字母得到與 goal 相等的結果&#xff0c;就返回 true &#xff1b;否則返回 false 。 交換字母的定義是&#xff1a;取兩個下標 i 和 j &#xff08;下標從 0 開始&#xff09;且滿足 …

python函數不同類型參數順序

python函數的參數定義順序必須為&#xff1a; 必須參數&#xff08;位置參數&#xff09;&#xff0c;默認參數&#xff0c;可變參數&#xff0c;命名關鍵字參數&#xff0c;關鍵字參數 如以下定義&#xff1a; def f1(a, b, c0, *args, d, **kw): print(a , a, b , b, c , c, …

亞洲國家互聯網滲透率_發展中亞洲國家如何回應covid 19

亞洲國家互聯網滲透率The COVID-19 pandemic has severely hit various economies across the world, with global impact estimated between USD 6.1 trillion and USD 9.1 trillion, equivalent to a loss of 7.1% to 10.5% of global gross domestic product (GDP).[1] More…

create-react-app項目使用假數據

做新項目的時候&#xff0c;前端每次要等后端接口準備好再開始&#xff0c;就會延期&#xff0c;等后端接口準備好了&#xff0c;前端這邊的項目又會相互緊張&#xff0c;如果前端跟后端同時進行&#xff0c;前期將框架&#xff0c;基礎做好&#xff0c;定好接口文檔&#xff0…

1854. 人口最多的年份

1854. 人口最多的年份 給你一個二維整數數組 logs &#xff0c;其中每個 logs[i] [birthi, deathi] 表示第 i 個人的出生和死亡年份。 年份 x 的 人口 定義為這一年期間活著的人的數目。第 i 個人被計入年份 x 的人口需要滿足&#xff1a;x 在閉區間 [birthi, deathi - 1] 內…

snake4444勒索病毒成功處理教程方法工具達康解密金蝶/用友數據庫sql后綴snake4444...

*snake4444勒索病毒成功處理教程方法 案例&#xff1a;筆者負責一個政務系統的第三方公司的運維&#xff0c;上班后發現服務器的所有文件都打不開了&#xff0c;而且每個文件后面都有一個snake4444的后綴&#xff0c;通過網絡我了解到這是一種勒索病毒。因為各個文件不能正常打…

有史以來最漂亮的游戲機

The recent reveal of the PlayStation 5’s design has divided the gaming world. There are those who appreciate its bold, daring industrial design and those who would have preferred something a little less outlandish; perhaps a little more traditional.噸 他最…

springboot-添加攔截器

在我們日常開發的過程中&#xff0c;經常會遇到這一類問題&#xff0c;要求需要用戶登錄以后才能夠訪問其他的內容&#xff0c;否則不行&#xff0c;那么解決這一問題最好的辦法就是運用攔截器&#xff0c;攔截器可以和多種處理請求的web框架結合&#xff0c;今天所講的就是與s…

1945. 字符串轉化后的各位數字之和

1945. 字符串轉化后的各位數字之和 給你一個由小寫字母組成的字符串 s &#xff0c;以及一個整數 k 。 首先&#xff0c;用字母在字母表中的位置替換該字母&#xff0c;將 s 轉化 為一個整數&#xff08;也就是&#xff0c;‘a’ 用 1 替換&#xff0c;‘b’ 用 2 替換&#…

墨刀原型制作 位置選擇_原型制作不再是可選的

墨刀原型制作 位置選擇The ‘role’ of a designer has been a topic of discussion several many years now. In the past decade, the role of a Designer got split into several different roles like — Graphic Designer, User Experience Designer, Interaction Designe…

eclipse maven 構建簡單springmvc項目

環境&#xff1a;eclipse Version: Oxygen.3a Release (4.7.3a) 創建maven Project項目&#xff0c;目錄結構 修改工程的相關編譯屬性 修改pop.xml&#xff0c;引入springmvc相關包 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.…

1859. 將句子排序

1859. 將句子排序 一個 句子 指的是一個序列的單詞用單個空格連接起來&#xff0c;且開頭和結尾沒有任何空格。每個單詞都只包含小寫或大寫英文字母。 我們可以給一個句子添加 從 1 開始的單詞位置索引 &#xff0c;并且將句子中所有單詞 打亂順序 。 比方說&#xff0c;句子…

醫動力Android基于CC組件化框架的探索與實踐

為什么要組件化? 醫動力App作為公司的核心產品已經有多年歷史了,隨著版本的不斷迭代,功能越來越多,代碼量越來越大,不可避免的會產生一下問題: 業務越來越復雜&#xff0c;維護成本高;業務耦合度高&#xff0c;代碼越來越臃腫&#xff0c;團隊內部多人協作開發困難;編譯時間長…

使用協同過濾推薦電影

ALSO, ARE RECOMMENDER SYSTEMS INFLUENCING OUR TASTE??此外&#xff0c;推薦系統是否影響我們的口味&#xff1f; An excerpt on creating a movie recommender system similar to the OTT platforms.有關創建類似于OTT平臺的電影推薦系統的摘錄。 INTRODUCTION介紹 For…

423. 從英文中重建數字

423. 從英文中重建數字 給你一個字符串 s &#xff0c;其中包含字母順序打亂的用英文單詞表示的若干數字&#xff08;0-9&#xff09;。按 升序 返回原始的數字。 例 1&#xff1a;輸入&#xff1a;s "owoztneoer" 輸出&#xff1a;"012"示例 2&#xf…

錦欣生殖獲戰略投資,華平、信銀領投,紅杉、藥明康德跟投

9月16日消息&#xff0c;錦欣生殖近日宣布已完成新一輪的戰略投資&#xff0c;本輪融資由原戰略股東華平投資及新引入的中信銀行旗下信銀投資領投&#xff0c;紅杉資本中國基金、藥明康德等跟投。完成本輪融資后&#xff0c;華平投資及信銀投資分別成為錦欣生殖的第二及第三大股…

數據暑假實習面試_面試數據科學實習如何準備

數據暑假實習面試Unfortunately, on this occasion, your application was not successful, and we have appointed an applicant who…不幸的是&#xff0c;這一次&#xff0c;您的申請沒有成功&#xff0c;我們已經任命了一位符合以下條件的申請人&#xff1a; Sounds famili…

兩道簡單的入門題

1&#xff09;  for循環求100以內奇數和 1 #include<stdio.h> 2 int main(){ 3 int ans0;//定義一個答案變量存儲答案 4 for(int i1;i<100;i)//用for從1循環到100&#xff0c;如果i%2&#xff01;0&#xff08;%是一種取余運算&#xff09; 5 if(…

1716. 計算力扣銀行的錢

1716. 計算力扣銀行的錢 Hercy 想要為購買第一輛車存錢。他 每天 都往力扣銀行里存錢。 最開始&#xff0c;他在周一的時候存入 1 塊錢。從周二到周日&#xff0c;他每天都比前一天多存入 1 塊錢。在接下來每一個周一&#xff0c;他都會比 前一個周一 多存入 1 塊錢。 給你 …