瀏覽器訪問背后的秘密:從加載到關閉,數據是否會丟失?

? 一次瀏覽器訪問 www.xxx.com 背后發生了什么?
—— 以及“我點了 ×,數據會不會丟?”的深度剖析

適讀人群:Web 開發者、運維工程師、性能調優/安全從業者


1?? 打開瀏覽器敲下網址:鏈路是如何啟動的?

階段關鍵詞關鍵細節
解析階段DNS、緩存瀏覽器先查本地/系統 DNS 緩存 → hosts → 瀏覽器 DNS 緩存 → 遞歸查詢(可能走 DoH/DoT)。拿到 A / AAAA 記錄。
連接階段TCP 3?way、TLS 1.3TCP:SYN → SYN?ACK → ACK;若啟用 QUIC/HTTP?3 則直接 UDP 把 3 次握手+TLS 合并。
TLS:ClientHello→ServerHello→ … → Finished,現代瀏覽器基本啟用 0?RTT/1?RTT。
請求階段HTTP/2、HPACK、首部壓縮瀏覽器構造 GET /,附帶頭(UA、Cookie、Accept?Encoding…),優先用 HTTP/2 多路復用并發流。
服務器內部負載均衡、反向代理、應用層可能經歷 ELB/Nginx/Sidecar,再到業務容器;中間會有 隊列、限流、熔斷
響應階段TCP 流/ QUIC 流服務器寫回狀態行+頭+Body;瀏覽器解析 HTML 發現靜態資源→并發下載→渲染。
結束階段FIN、連接復用HTTP/1.1的長連接或 H2/H3 的流會保持空閑等待復用;超時或瀏覽器關閉時發送 FIN

2?? “我等得太慢點了 ×,服務器會怎么想?”

2.1 瀏覽器側:取消動作

  • 顯式取消:用戶點擊“停止加載”或關閉 Tab。
    瀏覽器對活躍的 TCP/QUIC 流發送 RST(或 HTTP/2 RST_STREAM)。
  • 隱式取消:超時時間到、頁面卸載等;瀏覽器會 abort fetch,內核可能直接 close() 套接字。

2.2 網絡層:信號傳遞

協議取消信號服務器感知
TCPRST立即終止連接;內核返回 ECONNRESET,應用讀/寫觸發異常。
HTTP/2RST_STREAM (error?code=0)僅關閉對應流,復用的其他流不受影響;h2 服務器收到回調。
QUIC/HTTP?3STOP_SENDING / RESET_STREAM與 h2 類似,但基于 UDP;更快釋放流。

2.3 服務器側:請求已經“進廚房”怎么辦?

  1. 剛到負載均衡

    • 連接被復用,RST 直接丟棄,Nginx 可能還沒把請求轉給應用,成本小。
  2. 已進應用但未執行業務

    • 線程/協程池檢測到 socket 斷開會拋 IOException;大多數框架(Spring MVC、Express、Gin…)會捕獲記錄 ClientAbortException 后結束。
  3. 業務正在執行

    • CPU 正燒:圖片壓縮、大 SQL、RPC…
    • 同步模型:直到代碼寫響應時才發現對端關閉 → 計算白做了,但數據未寫出,資源浪費
    • 異步/事件模型:中途可檢測 connectionAborted flag 主動中止。
  4. 下游已持久化

    • 例如下單接口:一旦寫入數據庫/消息隊列,就算用戶取消,也已成功。
    • 于是就有了 支付回調、“查看訂單”按鈕來補償交互的不確定性。

3?? “數據丟不丟?”—— 三個不同層次的回答

角度是否丟失?解釋
傳輸層? 丟瀏覽器取消后,剩余報文不再發送;未到達的響應也不再接收。
應用層? 不一定服務器可能已完整處理,持久化成功。僅“用戶沒看到”而已。
業務語義需要冪等好的接口要做到 冪等&可重試:PUT/DELETE 設計有冪等鍵,POST 返回可查詢的 operationId

4?? 工程實踐:讓“取消”更友好

  1. 前端

    • AbortController 取消 fetch;
    • 超時反饋:Skeleton Screen / 旋轉骨架;
    • 使用 web?worker + keep?alive 提升體驗。
  2. 網關/反代

    • 配置 proxy_request_buffering off (Nginx) 讓大上傳即時回源;
    • 針對 client_abort 及時丟棄后端響應。
  3. 后端

    • 設計 可中斷任務:定期檢查 Thread.currentThread().isInterrupted()
    • 重型計算放入 作業隊列,前端輪詢 jobId
    • 數據庫寫操作加 事務/唯一約束 保證冪等。
  4. 監控

    • 關注 499 Client Closed Request(Nginx)、444 No Response
    • 鏈路追蹤標記 aborted=true,評估浪費。

5?? 小結

  • 用戶取消請求后,網絡傳輸層面數據一定中斷
  • 服務器邏輯可能仍在繼續,甚至已成功寫庫;
  • 工程上通過 冪等、作業分離、連接檢測 將“浪費”降到最低;
  • 讓前端與后端都能 優雅應對取消,才是真正的端到端體驗優化。

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

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

相關文章

【HDFS入門】深入解析DistCp:Hadoop分布式拷貝工具的原理與實踐

目錄 1 DistCp概述與應用場景 2 DistCp架構設計解析 2.1 系統架構圖 2.2 執行流程圖 3 DistCp核心技術原理 3.1 并行拷貝機制 3.2 斷點續傳實現原理 4 DistCp實戰指南 4.1 常用命令示例 4.2 性能優化策略 5 異常處理與監控 5.1 常見錯誤處理流程 5.2 監控指標建議…

hbuilderx云打包生成的ipa文件如何上架

使用hbuilderx打包,會遇到一個問題。開發的ios應用,需要上架到app store,因此,就需要APP store的簽名證書,并且還需要一個像xcode那樣的工具來上架app store。 我們這篇文章說明下,如何在windows電腦&…

第十五屆藍橋杯 2024 C/C++組 拼正方形

目錄 題目: 題目描述: 題目鏈接: 思路: 思路詳解: 易錯點: 代碼: 代碼詳解: 題目: 題目描述: 題目鏈接: P10898 [藍橋杯 2024 省 C] 拼正…

華為云獲取IAM用戶Token的方式及適用分析

🧠 一、為什么要獲取 IAM 用戶 Token? 我們用一個生活中的比喻來解釋👇: 🏢 比喻場景: 你要去一個 高級寫字樓(華為云物聯網平臺) 辦事(調用接口管理設備)&…

樂聚機器人與地瓜機器人達成戰略合作,聯合發布Aelos Embodied具身智能

要聞 4月19日,在CCF人形機器人與人工智能技術巡回研討會(武漢站)上,樂聚機器人與地瓜機器人達成戰略合作,雙方將基于RDK X5、RDK S100以及更高性能的國產大算力平臺,就夸父(KUAVO)、…

Web3架構下的數據隱私與保護

在這個信息爆炸的時代,Web3的概念如同一股清流,以其去中心化的特性,為數據隱私與保護帶來了新的希望。Web3,也被稱作下一代互聯網,它通過區塊鏈技術實現數據的去中心化存儲和處理,旨在提高數據的安全性和隱…

【OceanBase相關】02-OceanBase數據庫NFS備份實踐

文章目錄 一、前言1、概述2、備份方式3、備份流程4、恢復流程二、NFS備份1、注意事項2、服務端配置3、客戶端配置4、備份策略配置三、常用操作四、Q&A1、數據備份任務執行失敗,提示`start log archive backup when not STOP is not supported`1.1、問題說明1.2、解決措施2…

一行命令打開iOS模擬器

要在 Mac 命令行打開 iPhone 15 Pro 模擬器,需滿足已安裝 Xcode 這一前提條件,以下是具體操作步驟: 步驟一:列出所有可用模擬器設備 打開終端(Terminal),輸入并執行以下命令,用于列…

Java虛擬機(JVM)家族發展史及版本對比

Java虛擬機(JVM)家族發展史及版本對比 一、JVM家族發展史 1. 早期階段(1996-2000) Classic VM(Java 1.0-1.1): 廠商:Sun Microsystems(Oracle前身)。特點&…

嘻游電玩三端客戶端部署實戰:PC + Android + iOS 環境全覆蓋教程

本篇文章將針對“網狐系列嘻游電玩組件”的三端客戶端(PC端、安卓端、iOS端)進行詳細部署實操講解。文章將以實測部署為核心,提供資源結構說明、平臺適配調整、打包配置、常見問題修復,并輔以必要的關鍵配置代碼。 一、客戶端資源…

LabVIEW實現Voronoi圖繪制功能

該 LabVIEW 虛擬儀器(VI)借助 MathScript 節點,實現基于手機信號塔位置計算 Voronoi 圖的功能。通過操作演示,能直觀展示 Voronoi 圖在空間劃分上的應用。 各部分功能詳細說明 隨機地形創建部分 功能:根據 “Maximum a…

web刷題筆記

2024isctf ezrce 禁用了一些關鍵字符,查詢函數,系統執行函數,執行函數都有,空格也和斜桿也禁用了,但是其他一些很大一部分字符都沒有禁用,屬于關鍵詞禁用的類型,正常的步驟是去查一下列表&#…

集結號海螺捕魚游戲源碼解析(第二篇):水滸傳捕魚模塊邏輯與服務器幀同步詳解

本篇將全面解構“水滸傳”子游戲的服務端核心邏輯、幀同步機制、魚群刷新規則、客戶端命中表現與服務器計算之間的協同方式,聚焦于 C 與 Unity3D 跨端同步的真實實現過程。 一、水滸傳捕魚模塊資源結構 該模塊包含三部分核心目錄: 子游戲/game_shuihuz…

【產品經理從0到1】原型及Axure介紹

原型分類 原型的三種分類: 草圖原型:?繪稿,制作?便,修改不?便;低保真原型:簡單交互,?設計圖; 最好的原型是??灰的;?保真原型:復雜交互,有…

CVE-2024-23897-Jenkins 2.441之前版本存在任意文件讀取漏洞

1.漏洞介紹 Jenkins 2.441及更早版本,以及LTS 2.426.2及更早版本沒有禁用其CLI命令解析器的一個功能,該功能會將參數中字符后跟的文件路徑替換為該文件的內容,允許未經身份驗證的攻擊者讀取Jenkins控制器文件系統上的任意文件。 2.poc利用 下…

PostgreSQL性能調優與內核優化怎么做?

PostgreSQL 的高級性能調優和內核優化是PGCM認證的核心能力之一,也是企業級數據庫場景中解決性能瓶頸的關鍵手段。以下是直白易懂的實戰解析: 一、性能調優:讓數據庫“跑得更快” 1. 執行計劃優化 問題場景:一個復雜查詢耗時10秒…

DeepSeek是否采用了混合專家(MoE)架構?它如何提升模型效率?

引言 最近,關于DeepSeek是否采用混合專家(Mixture of Experts,MoE)架構的討論越來越多。MoE技術因其高效的計算特性,已經成為大模型訓練的熱門選擇。那么,DeepSeek到底有沒有用MoE?如果用了&am…

HTTP 請求頭與請求體:數據存儲的底層邏輯與實踐指南

文章目錄 一、數據承載的本質差異1.1、請求頭:元數據的 "集裝箱"1.2、請求體:業務數據的 "運輸艙"二、請求方式的選擇邏輯2.1、GET 請求:無體的輕量級交互2.2、POST 請求:體數據的主力軍2.3、PUT/PATCH 請求:體數據的更新場景三、參數屬性的深度解析3…

【網工第6版】第5章 網絡互聯②

目錄 ■ IPV6 ▲ IPV6報文格式 ◎ IPV6擴展報頭(RFC2460) ◎ IPv6相關協議 ▲ IPV6地址分類 ◎ IPv6地址基礎 ◎ IPv6地址舉例 ◎ IPv6地址分類 ◎ 特殊地址對比IPv4 vs IPv6 ▲ 過渡技術 本章重要程度:☆☆☆☆☆ ■ IPV6 與IPv4…

關于 梯度下降算法、線性回歸模型、梯度下降訓練線性回歸、線性回歸的其他訓練算法 以及 回歸模型分類 的詳細說明

以下是關于 梯度下降算法、線性回歸模型、梯度下降訓練線性回歸、線性回歸的其他訓練算法 以及 回歸模型分類 的詳細說明: 1. 梯度下降算法詳解 核心概念 梯度下降是一種 優化算法,用于尋找函數的最小值。其核心思想是沿著函數梯度的反方向逐步迭代&a…