在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

不只是前端,后端、產品和測試也需要了解的瀏覽器知識(二)

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-08-12 14:32 ? 次閱讀

繼上篇《 不只是前端,后端、產品和測試也需要了解的瀏覽器知識(一)》介紹了瀏覽器的基本情況、發展歷史以及市場占有率。

本篇文章將介紹瀏覽器基本原理。在掌握基本原理后,通過技術深入,在研發過程中不斷創新,推動產品性能、用戶體驗的提升,來實現業務的增長,創造可持續的價值

一、 業務系統呈現給用戶的節點

當用戶訪問我們的業務系統時,瀏覽器和服務器之間會進行一系列復雜的交互過程。瀏覽器整體的導航流程如下:

wKgZoma5rGWAFdf0AAIbzLRvuBs118.png

以下是用戶從輸入 URL 到看到業務系統頁面的詳細步驟:

1. 輸入 URL 并解析

1.1. 用戶輸入 URL 并按下回車鍵

用戶在瀏覽器地址欄中輸入業務系統的 URL,例如 https://www.businesssystem.com,并按下回車鍵。

1.2. 瀏覽器解析 URL

瀏覽器解析輸入的 URL,確定協議(如 HTTPS)、主機名(如 www.businesssystem.com)、端口號(如果有)、路徑、查詢參數等。

1.3. DNS 解析:

wKgaoma5rGaAH-HXAAFzwxrl74Q031.png

瀏覽器需要將主機名轉換為 IP 地址。這個過程稱為 DNS 解析,通常包括以下步驟:

?瀏覽器首先檢查本地 DNS 緩存,看看是否有對應的 IP 地址。

?如果本地緩存中沒有,瀏覽器會向操作系統查詢。

?操作系統會檢查自己的緩存,并可能向本地的 DNS 服務器發出請求。

?本地 DNS 服務器可能會遞歸查詢其他 DNS 服務器,直到找到對應的 IP 地址。

2. 建立連接、發送請求并接收響應

2.1. 建立 TCP 連接

一旦獲得了 IP 地址,瀏覽器會通過 TCP/IP 協議與服務器建立連接。對于 HTTPS,瀏覽器還會進行 SSL/TLS 握手,以建立安全連接。流程如下

wKgZoma5rGiAcdZ8AADehcnvaIM456.png

2.2. 發送 HTTP 請求

連接建立后,瀏覽器會構建一個 HTTP 請求并發送給服務器。請求包括請求行(例如 GET /index.html HTTP/1.1)、請求頭(如 User-Agent、Accept 等)以及可能的請求體(對于 POST 請求)。

2.3. 服務器處理請求

服務器接收到請求后,會根據請求的內容進行處理:

?服務器解析請求,確定所需的資源(如 HTML 文件、圖片、數據等)。

?服務器可能需要與后端數據庫或其他服務進行交互,以生成響應內容。

?服務器構建 HTTP 響應,包括狀態行(如 HTTP/1.1 200 OK)、響應頭(如 Content-Type、Content-Length 等)和響應體(實際的頁面內容)。

2.4. 發送 HTTP 響應

服務器將構建好的 HTTP 響應發送回瀏覽器。

2.5. 瀏覽器接收響應

瀏覽器接收到服務器的響應后,會根據響應頭的信息處理響應體:

?如果響應是重定向(如 301 或 302),瀏覽器會根據 Location 頭再次發起請求。

?如果響應包含壓縮內容(如 gzip),瀏覽器會解壓縮。

?瀏覽器會根據 Content-Type 頭確定如何處理響應體(如 HTML、CSS、JavaScript、圖片等)。

發送請求和接受響應流程如下:

wKgaoma5rGmAE-Z7AATIf1cEmTY413.png

3. 解析和加載資源、渲染頁面

3.1. 解析 HTML

瀏覽器開始解析 HTML 文檔,構建 DOM 樹。解析過程中,瀏覽器會處理各種 HTML 標簽,并根據需要發起其他請求(如 CSS、JavaScript、圖片等)。

3.2. 加載和執行資源

?CSS:瀏覽器解析 CSS 文件并構建 CSSOM 樹,與 DOM 樹結合形成渲染樹。

?JavaScript:瀏覽器解析和執行 JavaScript 代碼,可能會修改 DOM 樹或 CSSOM 樹。

?圖片和其他資源:瀏覽器會異步加載這些資源,并在加載完成后進行渲染。

3.3. 渲染頁面

瀏覽器根據渲染樹計算每個元素的布局(位置和大小),并將頁面繪制到屏幕上。這個過程可能會涉及多次重繪和重排(reflow/repaint),尤其是在 JavaScript 修改 DOM 或 CSS 的情況下。

頁面渲染流程如下:

wKgaoma5rGuAdFFeAAIUlEA8mUs352.png

4. 用戶交互

頁面加載完成后,用戶可以與頁面進行交互。瀏覽器會響應用戶的操作(如點擊、輸入等),并可能通過 JavaScript 動態更新頁面內容。

5. 小結

業務系統的呈現過程主要是:URL解析、與服務器建立連接、服務器處理請求并返回響應、下載和解析響應、頁面渲染。

?

二、 系統呈現過程中的技術點

1. DNS解析優化

1.1. 啟用 DNS 預解析

?DNS 預解析(DNS Prefetching):瀏覽器在用戶點擊鏈接之前,提前解析該鏈接的域名,從而減少等待時間。

1.2. DNS緩存優化

合理設置 DNS 記錄的 TTL(Time-To-Live),使得 DNS 記錄可以在客戶端和中間緩存服務器上保存適當的時間,減少重復解析請求。

?對于不經常變化的記錄,可以設置較長的 TTL 值(如 24 小時)。

?對于經常變化的記錄,可以設置較短的 TTL 值(如幾分鐘到幾小時)。

1.3. 負載均衡和冗余

?負載均衡:使用 DNS 負載均衡技術,將流量分配到多臺服務器上,防止單點故障。

?冗余配置:配置多個權威 DNS 服務器,確保在一個服務器故障時,其他服務器可以繼續提供解析服務。

1.4. 減少 DNS 查詢次數

?合并資源:盡量將資源放在同一個域名下,減少跨域名的 DNS 查詢次數。

?減少外部資源:盡量減少頁面中引用的外部資源(如第三方腳本和樣式),以減少額外的 DNS 查詢。

2. http協議優化

2.1. 請求方法優化

?使用合適的請求方法:確保使用正確的 HTTP 方法(GET、POST、PUT、DELETE 等)來表示操作的意圖。例如,使用 GET 方法獲取數據,使用 POST 方法提交數據。

?避免不必要的請求:合并請求,減少頁面中的請求次數。例如,CSS 和 JavaScript 文件可以合并,圖像可以使用精靈圖(sprite)。

2.2. 狀態碼優化

?正確使用狀態碼:確保服務器返回正確的 HTTP 狀態碼。例如,200 表示成功,404 表示資源未找到,500 表示服務器錯誤。

?重定向優化:減少重定向次數,避免不必要的 301 或 302 重定向。

2.3. 請求頭和響應頭優化

?壓縮傳輸內容:使用 Gzip 或 Brotli 壓縮傳輸內容,減少傳輸數據量。

?緩存控制:使用緩存控制頭(如 Cache-Control、Expires)來緩存靜態資源,減少重復請求。

?內容安全策略(CSP):設置內容安全策略頭,防止跨站腳本攻擊(XSS)。

?減少頭部大小:刪除不必要的請求和響應頭,減少頭部大小,加快傳輸速度。

2.4. HTTP/2 和 HTTP/3 優化

a. 多路復用

?啟用 HTTP/2 或 HTTP/3:這些協議支持多路復用,可以在一個 TCP 連接中同時發送多個請求和響應,減少延遲。

?減少域名分片:HTTP/2 和 HTTP/3 中,多路復用使得域名分片(將資源分布到多個子域名)不再必要,反而可能降低性能。

b. 頭部壓縮

?使用 HPACK(HTTP/2)或 QPACK(HTTP/3)頭部壓縮:這些協議支持頭部壓縮,減少傳輸的數據量。

c. 減少延遲

?使用優先級和依賴:HTTP/2 和 HTTP/3 支持請求優先級和依賴,確保關鍵資源優先加載。

?啟用 QUIC 協議(HTTP/3):QUIC 協議基于 UDP,減少了連接建立的延遲,提供更快的傳輸速度。

4. CDN優化

?使用 CDN:將靜態資源分發到全球各地的節點,減少用戶訪問的延遲。

?邊緣計算:利用 CDN 的邊緣計算能力,在靠近用戶的節點上處理部分邏輯,減少服務器負載。

?靜態資源托管:將靜態資源(如圖像、CSS、JavaScript)托管在 CDN 上,減少網絡延遲,加快加載速度。

wKgZoma5rGuAIBFYAACiu-BsSjU130.png

5. 頁面渲染時優化

5.1. HTML 優化

a. 減少 DOM 復雜度

?簡化 HTML 結構:減少嵌套層級,避免過度復雜的 DOM 結構。

?刪除不必要的元素:移除無用的 HTML 標簽和注釋。

b. 延遲加載非關鍵內容

?使用 defer 和 async:對非關鍵 JavaScript 文件使用 defer 或 async 屬性,避免阻塞頁面渲染。

?懶加載圖像和視頻使用 loading="lazy" 屬性或 JavaScript 實現懶加載,延遲加載視口外的圖像和視頻。

5.2. CSS 優化

a. 減少 CSS 文件大小

?壓縮 CSS 文件:使用工具(如 CSSNano、CleanCSS)壓縮 CSS 文件,減少文件大小。

?移除未使用的 CSS:使用工具(如 PurgeCSS)移除未使用的 CSS 規則。

b. 優化 CSS 加載

?使用外部樣式表:將 CSS 放在外部樣式表中,而不是內聯樣式,便于緩存和管理。

?放置 CSS 在

中:確保 CSS 文件在 中加載,以便盡快渲染頁面。

?避免 CSS 阻塞渲染:將關鍵 CSS 內聯到 HTML 中,非關鍵 CSS 異步加載。

5.3. JavaScript 優化

a. 減少 JavaScript 文件大小

?壓縮和混淆:使用工具(如 UglifyJS、Terser)壓縮和混淆 JavaScript 文件,減少文件大小。

?移除未使用的代碼:使用工具(如 Webpack 的 Tree Shaking)移除未使用的代碼。

b. 優化 JavaScript 加載

?分離關鍵和非關鍵腳本:將關鍵腳本放在

中,非關鍵腳本放在頁面底部或使用 defer 和 async。

?代碼分割:使用 Webpack 等工具進行代碼分割,按需加載模塊。

c. 優化 JavaScript 執行

?減少重排和重繪:避免頻繁操作 DOM,使用文檔片段(Document Fragment)或虛擬 DOM 技術。

?使用節流和防抖:對高頻率事件(如滾動、輸入)使用節流(throttle)和防抖(debounce)技術,減少不必要的函數調用。

?減少 JavaScript 阻塞:避免長時間運行的 JavaScript 任務,使用 Web Workers 將復雜計算移到后臺線程。

5.4. 圖像優化

a. 減少圖像文件大小

?壓縮圖像:使用工具(如 ImageOptim、TinyPNG)壓縮圖像文件,減少文件大小。

?選擇合適的格式:根據圖像內容選擇合適的格式(如 JPEG、PNG、WebP),WebP 通常比 JPEG 和 PNG 更小。

b. 優化圖像加載

?使用響應式圖像:使用 srcset 和 sizes 屬性提供不同分辨率的圖像,適應不同設備。

?懶加載圖像:使用 loading="lazy" 屬性或 JavaScript 實現圖像懶加載。

5.5. 其他優化策略

a. 優化字體加載

?使用字體顯示策略:使用 font-display 屬性控制字體加載行為,避免字體閃爍(FOIT)和不可見文本(FOUT)。

?減少字體文件大小:使用子集化工具(如 Google Fonts 的子集化功能)只加載需要的字符集,減少字體文件大小。

6. 小結

在實際業務中我們需要針對頁面呈現過程中的每一個節點,去制定不同的優化策略。

三、總結

本文主要介紹了業務系統呈現給用戶所經歷的各個節點,以及作為技術人能在各節點中進行優化的點, 通過這些技術優化點,在研發過程中不斷創新,推動產品性能、用戶體驗的提升,來實現業務的增長,創造可持續的價值。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • DNS
    DNS
    +關注

    關注

    0

    文章

    219

    瀏覽量

    19938
  • 瀏覽器
    +關注

    關注

    1

    文章

    1036

    瀏覽量

    35552
  • URL
    URL
    +關注

    關注

    0

    文章

    139

    瀏覽量

    15504
收藏 人收藏

    評論

    相關推薦

    E2000 Speedometer測試瀏覽器性能

    設計的基準測試工具,旨在通過模擬用戶交互來測量 Web應用的響應速度 。其核心目標是盡可能真實地反映現實世界的Web體驗。當瀏覽器在Speedometer上的得分提升時,實際用戶的體驗應得到改善
    發表于 01-10 21:33

    2024年12月瀏覽器市場份額報告:谷歌Chrome穩居榜首

    %,彰顯了其作為全球最受歡迎的瀏覽器之一的強大實力。 緊隨其后的是蘋果Safari瀏覽器,憑借17.09%的市場份額位列第。Safari瀏覽器憑借其在蘋果設備上的預裝優勢,以及流暢的
    的頭像 發表于 01-02 14:58 ?579次閱讀

    訊飛星火瀏覽器插件全新升級

    時刻陪伴,星火插件讓你的瀏覽器變成真正的生產力工具。
    的頭像 發表于 12-25 09:48 ?335次閱讀

    Chrome瀏覽器優化Android性能,驍龍8至尊版表現突出

    版Chrome瀏覽器瀏覽器基準測試Speedometer 2.1中的得分顯著提升,整體性能實現了大幅提升。這一改進使得Android設備在瀏覽
    的頭像 發表于 12-13 14:44 ?452次閱讀

    AWTK 最新動態:支持瀏覽器控件

    導讀AWTK瀏覽器控件,基于webview項目實現,將瀏覽器嵌入到AWTK應用程序中,讓開發者可以方便的集成在線幫助和調用地圖等功能。awtk-widget-web-view是基于webview實現的AWTK瀏覽器控件,使得AW
    的頭像 發表于 11-20 01:05 ?285次閱讀
    AWTK 最新動態:支持<b class='flag-5'>瀏覽器</b>控件

    寫一個Chrome瀏覽器插件

    一、什么是瀏覽器插件 瀏覽器插件是依附于瀏覽器,用來拓展網頁能力的程序。插件具有監聽瀏覽器事件、獲取和修改網頁元素、攔截網絡請求、添加快捷菜單等功能。使用
    的頭像 發表于 11-18 17:12 ?519次閱讀
    寫一個Chrome<b class='flag-5'>瀏覽器</b>插件

    跨域問題是由瀏覽器的同源策略造成的

    瀏覽器
    jf_62215197
    發布于 :2024年08月27日 07:51:42

    要了解下大模型知識

    工作需要,想要了解一下大模型算力建設知識
    發表于 08-20 15:31

    不只是前端后端產品測試需要了解瀏覽器知識

    一、我們為什么要了解瀏覽器? 1. 對于前端開發者 1.瀏覽器是用戶體驗的第一線。我們需要了解瀏覽器
    的頭像 發表于 07-01 18:03 ?524次閱讀
    <b class='flag-5'>不只是</b><b class='flag-5'>前端</b>,<b class='flag-5'>后端</b>、<b class='flag-5'>產品</b>和<b class='flag-5'>測試</b><b class='flag-5'>也</b><b class='flag-5'>需要了解</b>的<b class='flag-5'>瀏覽器</b><b class='flag-5'>知識</b>

    Opera瀏覽器引領潮流,全球首接端側AI大模型

    昆侖萬維旗下海外平臺Opera宣布,其旗艦瀏覽器Opera One和游戲瀏覽器Opera GX將正式接入端側AI大模型,成為全球首個實現這一突破的主流瀏覽器
    的頭像 發表于 06-03 09:18 ?803次閱讀

    Edge瀏覽器關閉Microsoft Rewards擴展原因揭曉

    據報道,近期德國等地的Microsoft Edge瀏覽器用戶發現,安裝或啟動Microsoft Rewards擴展后,會出現“右上角擴展被Edge瀏覽器禁用以保障您的瀏覽器安全”的提醒窗口。
    的頭像 發表于 04-10 09:55 ?939次閱讀

    Mozilla Firefox瀏覽器推出Text Fragments功能,提升用戶體驗

    早在2020年,谷歌即在Chrome瀏覽器中推出了“Scroll to Text Fragments”功能,而Edge、Opera、Brave、Vivaldi以及蘋果Safari等基于Chromium的瀏覽器已支持這一便捷特性
    的頭像 發表于 04-08 10:21 ?684次閱讀

    龍芯瀏覽器V3通過《商用密碼產品認證證書》級認證

    近日,龍芯瀏覽器的最新版本V3獲得國家密碼管理局商用密碼檢測中心頒發的《商用密碼產品認證證書》級認證,標志著該產品在安全能力和應用水準方面達到行業前沿水平。
    的頭像 發表于 04-07 14:20 ?808次閱讀
    龍芯<b class='flag-5'>瀏覽器</b>V3通過《商用密碼<b class='flag-5'>產品</b>認證證書》<b class='flag-5'>二</b>級認證

    鴻蒙實戰開發:【瀏覽器制作】

    使用[@ohos.systemparameter]接口和[Web組件]展示了一個瀏覽器的基本功能,展示網頁,根據頁面歷史棧前進回退等。
    的頭像 發表于 03-19 17:47 ?658次閱讀
    鴻蒙實戰開發:【<b class='flag-5'>瀏覽器</b>制作】

    微軟推出ONNX Runtime Web,利用WebGPU優化瀏覽器機器學習性能

    作為微軟的 JavaScript 庫,ONNX Runtime Web 使得網絡開發者能在瀏覽器環境下部署機器學習模型,并提供多種硬件加速的后端支持。
    的頭像 發表于 03-05 14:23 ?1260次閱讀
    主站蜘蛛池模板: 天天天天添天天拍天天谢 | 天天摸夜夜摸成人免费视频 | 天天色天天操天天射 | 日本特黄特黄刺激大片免费 | 色天天干 | 日本xxwwxxww视频免费丝袜 | 青草精品视频 | 黄网在线看 | 91久久澡人人爽人人添 | 日本免费一区二区视频 | 亚洲综合激情六月婷婷在线观看 | 韩国理论三级在线观看视频 | 亚洲一区二区三区高清视频 | 欧美一级视频在线观看 | 国产免费美女 | 成人午夜性视频欧美成人 | 色先锋av资源中文字幕 | 去毛片 | 天天天综合 | 伊人久久综合网亚洲 | free性乌克兰高清videos | 色综合888 | 666夜色666夜色国产免费看 | 一级爱片 | 啪啪亚洲 | 天天干天天干天天 | 农村妇女高清毛片一级 | 在线播放交视频 | 国产一级影院 | 99精品免费视频 | 亚洲日本黄色 | 色屁屁www影院免费观看视频 | 韩国三级无遮挡床戏视频 | 亚洲综合久久综合激情久久 | aaaaa级毛片免费视频 | 99热这里只有精品一区二区三区 | 中文字幕一区二区三区四区五区 | 奇米影视五月天 | 国产美女动态免费视频 | 噜噜影院无毒不卡 | www毛片|