HTTP長連接

長連接優點

HTTP為什么要開啟長連接呢?
主要是為了節省建立的時間,請求可以復用同一條TCP鏈路,不用重復進行三握+四揮
如果沒有長連接,每次請求都做三握+四揮
在這里插入圖片描述
如果有長鏈接,在一個 TCP 連接中可以持續發送多份數據而不會斷開連接,即請求可以復用TCP鏈路
在這里插入圖片描述

長連接缺點

長連接不是萬能的,存在隊頭阻塞

隊頭阻塞

如果僅僅使用一個連接,它需要發起請求、等待響應,之后才能發起下一個請求。

在請求應答過程中,如果出現任何狀況,剩下所有的工作都會被阻塞在那次請求應答之后。
這就是“隊頭阻塞”,它會阻礙網絡傳輸和Web頁面渲染,直至失去響應。

為了防止這種問題,現代瀏覽器會針對單個域名開啟6個連接,通過各個連接分別發送請求。
它實現了某種程度上的并行,但是每個連接仍會受到“隊頭阻塞”的影響

pipline

為解決隊頭阻塞,提出 pipline 方案
雖然在一個 tcp 鏈路中實現多個 http 并發,但因為該方案有缺陷,大部分瀏覽器默認關閉 pipeline

其一:是因為返回時會阻塞,誰先發送,誰先返回,順序絕對不能亂
其二:只能是請求(get、head等)才能應用 pipeline
在這里插入圖片描述

HTTP開啟長連接

C

開啟 HTTP 長連接,對前端很簡單,方式如下:
協議 開啟 關閉
HTTP1.0 Connection: keep-alive 默認
HTTP1.1 默認 Connection: close

S

Keep-Alive 需要服務端支持:
Httpd 守護進程,如 nginx 需要設置 keepalive_timeout
keepalive_timout 時間值:一個 http 產生的 tcp 連接在傳送完最后一個響應后,還需要 hold 住 keepalive_timeout 秒后,才開始關閉連接

  • keepalive_timeout=0:建立tcp連接 + 傳送http請求 + 執行時間 + 傳送http響應 + 關閉tcp連接 + 2MSL
  • keepalive_timeout>0:建立tcp連接 + (最后一個響應時間 – 第一個請求時間) + 關閉tcp連接 + 2MSL

代碼

HTTP1.1 開啟 keepalive 長連接
在這里插入圖片描述

// clients
func doGet(client *http.Client, url string, id int) {resp, err := client.Get

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

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

相關文章

第六十八回 東平府誤陷九紋龍 宋公明義釋雙槍將-文心大模型ernie-speed免費使用方法

宋江和盧俊義抓鬮兒,宋江打東平府,盧俊義打東昌府,誰先打下誰做梁山泊主。宋江帶領林沖、花榮、劉唐等二十八人,盧俊義帶領吳用、公孫勝、關勝等二十八人。 宋江等人到了東平府外安山鎮,郁保四和王定六自告奮勇去下戰…

比Elasticsearch更高效的開源搜索引擎Meilisearch——筑夢之路

功能說明 快速與高效: Meilisearch 旨在提供快速的搜索速度。它可以在毫秒級別內返回查詢結果,即使在處理大型數據集時也是如此。 例如,在官方提供的基準測試中,使用 Meilisearch 處理 10 萬個文檔時,平均搜索時間為 …

vue3制作輪播圖+vue輪播圖的圖片引入方式

對應的<teemplate> <template><div class"box"><ul class"ul1" ref"ul1"><li v-for"(img, idx) in images" :key"idx" :style"{ zIndex: img.zIndex }"><img :src"img.s…

深度學習驅動的中文情感分析:PlugLink 在實踐中的橋梁作用

深度學習驅動的中文情感分析&#xff1a;PlugLink 在實踐中的橋梁作用 情感分析技術則如同濾網&#xff0c;幫助我們從這股洪流中篩選出有價值的情感信號。特別是對于中文這樣的多音字、同音詞豐富且語境復雜度高的語言&#xff0c;深度學習模型展現了無與倫比的優勢。本文將以…

代碼隨想錄第45天|動態規劃

300.最長遞增子序列 參考 dp[i] 表示以 i 為結尾的最長遞增子序列長度遞推公式: 使用 i 和 j 判斷 dp[i] max(dp[j] 1, dp[i])每次 j 都需要從頭遍歷 初始化: dp[i] 1 class Solution { public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums…

基于STM32設計的管道有害氣體檢測裝置(ESP8266局域網)176

基于STM32設計的管道有害氣體檢測裝置(176) 文章目錄 一、前言1.1 項目介紹【1】項目功能介紹【2】項目硬件模塊組成【3】ESP8266模塊配置【4】上位機開發思路【5】項目模塊劃分【6】LCD顯示屏界面布局【7】上位機界面布局1.2 項目功能需求1.3 項目開發背景1.4 開發工具的選擇1…

國產化新標桿:TiDB 助力廣發銀行新一代總賬系統投產上線

隨著全球金融市場的快速發展和數字化轉型的深入推進&#xff0c;金融科技已成為推動銀行業創新的核心力量。特別是在當前復雜多變的經濟環境下&#xff0c;銀行業務的高效運作和風險管理能力顯得尤為重要。總賬系統作為銀行會計信息系統的核心&#xff0c;承載著記錄、處理和匯…

2024年06月CCF-GESP編程能力等級認證Python編程二級真題解析

本文收錄于專欄《Python等級認證CCF-GESP真題解析》&#xff0c;專欄總目錄&#xff1a;點這里&#xff0c;訂閱后可閱讀專欄內所有文章。 一、單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09; 第 1 題 小楊父母帶他到某培訓機構給他報名參加CCF組織的GESP認證…

云動態摘要 2024-07-07

給您帶來云廠商的最新動態,最新產品資訊和最新優惠更新。 最新優惠與活動 數據庫上云優選 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系產品新用戶低至首年6折起! [免費體驗]智能助手ChatBI上線 騰訊云 2024-07-02 基于混元大模型打造,可通過對話方式生成可視化…

說一說null 和 undefined 的區別,如何讓一個屬性變為null

共同點 null和undefined是JavaScript中的兩個基本數據類型 不同點 undefined&#xff1a;這個值表示變量已聲明但還沒被賦值。 null&#xff1a;這個值表示空值或無值&#xff0c;通常用于手動置一個變量為空 要將一個屬性設置為null&#xff0c;你可以直接給屬性賦值 let…

18_特征金字塔網絡FPN結構詳解

1.1 簡介 在深度學習領域&#xff0c;尤其是計算機視覺和目標檢測任務中&#xff0c;Feature Pyramid Networks (FPN) 是一種革命性的架構設計&#xff0c;它解決了多尺度特征檢測和融合的關鍵問題。FPN最初由何凱明等人在2017年的論文《Feature Pyramid Networks for Object …

保護您的數據:應對MKP勒索病毒的有效策略

導言&#xff1a; 在當今數字化時代&#xff0c;.mkp勒索病毒等惡意軟件已經成為廣泛存在的安全威脅&#xff0c;對個人用戶和企業的數據安全構成了嚴峻挑戰。本文將探討.mkp勒索病毒的特點、傳播方式以及創新的應對策略&#xff0c;旨在幫助讀者更有效地應對這一威脅。如不幸…

Python面試題:請解釋什么是模塊和包,并描述它們的區別

在 Python 中&#xff0c;模塊&#xff08;module&#xff09;和包&#xff08;package&#xff09;是組織和管理代碼的兩種方式。它們幫助開發者創建結構化、可維護和可復用的代碼。 模塊&#xff08;Module&#xff09; 模塊是包含 Python 代碼的文件&#xff0c;擴展名為 …

ansible常見問題配置好了密碼還是報錯

| FAILED! > { “msg”: “Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host’s fingerprint to your known_hosts file to manage this host.” } 怎么解決&#xf…

Stable Diffusion圖像的臉部細節控制——采樣器全解析

文章目錄 藝術地掌控人物形象好易智算原因分析為什么在使用Stable Diffusion生成全身圖像時&#xff0c;臉部細節往往不夠精細&#xff1f; 解決策略 局部重繪采樣器總結 藝術地掌控人物形象 在運用Stable Diffusion這一功能強大的AI繪圖工具時&#xff0c;我們往往會發現自己…

ESP32 步進電機精準控制:打造高精度 DIY 寫字機器人,實現流暢書寫體驗

摘要: 想讓你的 ESP32 不再僅僅是控制燈光的工具嗎&#xff1f; 本文將帶你使用 ESP32 開發板、步進電機和簡單的機械結構打造一個能夠自動寫字的機器人。我們將深入淺出地講解硬件連接、軟件代碼以及控制邏輯&#xff0c;并提供完整的項目代碼和電路圖&#xff0c;即使是 Ardu…

在mac下 Vue2和Vue3并存 全局Vue2環境創建Vue3新項目(Vue cli2和Vue cli4)

全局安裝vue2 npm install vue-cli -g自行在任意位置創建一個文件夾vue3&#xff0c;局部安裝vue3,注意不要帶-g npm install vue/cli安裝完成后&#xff0c;進入目錄&#xff0c;修改vue為vue3 找到vue3/node-moudles/.bin/vue&#xff0c;把vue改成vue3。 對環境變量進行配置…

linux修改內核實現禁止被ping(隨手記)

概述 Linux默認允許被ping。其主要決定因素為&#xff1a; 內核參數防火墻&#xff08;iptables/firewall&#xff09; 以上的決定因素是與的關系&#xff0c;即需要均滿足。 因此&#xff0c;修改linux禁被ping有以上兩種方法可以實現。 修改內核文件使禁ping 1. 臨時生…

Windows環境安裝Redis和Redis Desktop Manager圖文詳解教程

版權聲明 本文原創作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Redis概述 Redis是一個開源的高性能鍵值對數據庫&#xff0c;以其卓越的讀寫速度而著稱&#xff0c;廣泛用于數據庫、緩存和消息代理。它主要將數據存儲在內存中&#xff0…

C++初學者指南-5.標準庫(第一部分)--迭代器

C初學者指南-5.標準庫(第一部分)–迭代器 Iterators 文章目錄 C初學者指南-5.標準庫(第一部分)--迭代器 Iterators1.默認正向迭代器2.反向迭代器3.基于迭代器的循環4.示例&#xff1a;交換相鄰的一對元素5.迭代器范圍6.迭代器范圍中的元素數量7. 總結&#xff1a;迭代器 指向某…