0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

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

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

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

本篇文章將介紹瀏覽器基本原理。在掌握基本原理后,通過技術(shù)深入,在研發(fā)過程中不斷創(chuàng)新,推動產(chǎn)品性能、用戶體驗的提升,來實現(xiàn)業(yè)務(wù)的增長,創(chuàng)造可持續(xù)的價值。

一、 業(yè)務(wù)系統(tǒng)呈現(xiàn)給用戶的節(jié)點

當用戶訪問我們的業(yè)務(wù)系統(tǒng)時,瀏覽器和服務(wù)器之間會進行一系列復(fù)雜的交互過程。瀏覽器整體的導(dǎo)航流程如下:

wKgZoma5rGWAFdf0AAIbzLRvuBs118.png

以下是用戶從輸入 URL 到看到業(yè)務(wù)系統(tǒng)頁面的詳細步驟:

1. 輸入 URL 并解析

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

用戶在瀏覽器地址欄中輸入業(yè)務(wù)系統(tǒng)的 URL,例如 https://www.businesssystem.com,并按下回車鍵。

1.2. 瀏覽器解析 URL

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

1.3. DNS 解析:

wKgaoma5rGaAH-HXAAFzwxrl74Q031.png

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

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

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

?操作系統(tǒng)會檢查自己的緩存,并可能向本地的 DNS 服務(wù)器發(fā)出請求。

?本地 DNS 服務(wù)器可能會遞歸查詢其他 DNS 服務(wù)器,直到找到對應(yīng)的 IP 地址。

2. 建立連接、發(fā)送請求并接收響應(yīng)

2.1. 建立 TCP 連接

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

wKgZoma5rGiAcdZ8AADehcnvaIM456.png

2.2. 發(fā)送 HTTP 請求

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

2.3. 服務(wù)器處理請求

服務(wù)器接收到請求后,會根據(jù)請求的內(nèi)容進行處理:

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

?服務(wù)器可能需要與后端數(shù)據(jù)庫或其他服務(wù)進行交互,以生成響應(yīng)內(nèi)容。

?服務(wù)器構(gòu)建 HTTP 響應(yīng),包括狀態(tài)行(如 HTTP/1.1 200 OK)、響應(yīng)頭(如 Content-Type、Content-Length 等)和響應(yīng)體(實際的頁面內(nèi)容)。

2.4. 發(fā)送 HTTP 響應(yīng)

服務(wù)器將構(gòu)建好的 HTTP 響應(yīng)發(fā)送回瀏覽器。

2.5. 瀏覽器接收響應(yīng)

瀏覽器接收到服務(wù)器的響應(yīng)后,會根據(jù)響應(yīng)頭的信息處理響應(yīng)體:

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

?如果響應(yīng)包含壓縮內(nèi)容(如 gzip),瀏覽器會解壓縮。

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

發(fā)送請求和接受響應(yīng)流程如下:

wKgaoma5rGmAE-Z7AATIf1cEmTY413.png

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

3.1. 解析 HTML

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

3.2. 加載和執(zhí)行資源

?CSS:瀏覽器解析 CSS 文件并構(gòu)建 CSSOM 樹,與 DOM 樹結(jié)合形成渲染樹。

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

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

3.3. 渲染頁面

瀏覽器根據(jù)渲染樹計算每個元素的布局(位置和大?。㈨撁胬L制到屏幕上。這個過程可能會涉及多次重繪和重排(reflow/repaint),尤其是在 JavaScript 修改 DOM 或 CSS 的情況下。

頁面渲染流程如下:

wKgaoma5rGuAdFFeAAIUlEA8mUs352.png

4. 用戶交互

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

5. 小結(jié)

業(yè)務(wù)系統(tǒng)的呈現(xiàn)過程主要是:URL解析、與服務(wù)器建立連接、服務(wù)器處理請求并返回響應(yīng)、下載和解析響應(yīng)、頁面渲染。

?

二、 系統(tǒng)呈現(xiàn)過程中的技術(shù)點

1. DNS解析優(yōu)化

1.1. 啟用 DNS 預(yù)解析

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

1.2. DNS緩存優(yōu)化

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

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

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

1.3. 負載均衡和冗余

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

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

1.4. 減少 DNS 查詢次數(shù)

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

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

2. http協(xié)議優(yōu)化

2.1. 請求方法優(yōu)化

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

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

2.2. 狀態(tài)碼優(yōu)化

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

?重定向優(yōu)化:減少重定向次數(shù),避免不必要的 301 或 302 重定向。

2.3. 請求頭和響應(yīng)頭優(yōu)化

?壓縮傳輸內(nèi)容:使用 Gzip 或 Brotli 壓縮傳輸內(nèi)容,減少傳輸數(shù)據(jù)量。

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

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

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

2.4. HTTP/2 和 HTTP/3 優(yōu)化

a. 多路復(fù)用

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

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

b. 頭部壓縮

?使用 HPACK(HTTP/2)或 QPACK(HTTP/3)頭部壓縮:這些協(xié)議支持頭部壓縮,減少傳輸?shù)臄?shù)據(jù)量。

c. 減少延遲

?使用優(yōu)先級和依賴:HTTP/2 和 HTTP/3 支持請求優(yōu)先級和依賴,確保關(guān)鍵資源優(yōu)先加載。

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

4. CDN優(yōu)化

?使用 CDN:將靜態(tài)資源分發(fā)到全球各地的節(jié)點,減少用戶訪問的延遲。

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

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

wKgZoma5rGuAIBFYAACiu-BsSjU130.png

5. 頁面渲染時優(yōu)化

5.1. HTML 優(yōu)化

a. 減少 DOM 復(fù)雜度

?簡化 HTML 結(jié)構(gòu):減少嵌套層級,避免過度復(fù)雜的 DOM 結(jié)構(gòu)。

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

b. 延遲加載非關(guān)鍵內(nèi)容

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

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

5.2. CSS 優(yōu)化

a. 減少 CSS 文件大小

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

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

b. 優(yōu)化 CSS 加載

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

?放置 CSS 在

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

?避免 CSS 阻塞渲染:將關(guān)鍵 CSS 內(nèi)聯(lián)到 HTML 中,非關(guān)鍵 CSS 異步加載。

5.3. JavaScript 優(yōu)化

a. 減少 JavaScript 文件大小

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

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

b. 優(yōu)化 JavaScript 加載

?分離關(guān)鍵和非關(guān)鍵腳本:將關(guān)鍵腳本放在

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

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

c. 優(yōu)化 JavaScript 執(zhí)行

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

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

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

5.4. 圖像優(yōu)化

a. 減少圖像文件大小

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

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

b. 優(yōu)化圖像加載

?使用響應(yīng)式圖像:使用 srcset 和 sizes 屬性提供不同分辨率的圖像,適應(yīng)不同設(shè)備。

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

5.5. 其他優(yōu)化策略

a. 優(yōu)化字體加載

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

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

6. 小結(jié)

在實際業(yè)務(wù)中我們需要針對頁面呈現(xiàn)過程中的每一個節(jié)點,去制定不同的優(yōu)化策略。

三、總結(jié)

本文主要介紹了業(yè)務(wù)系統(tǒng)呈現(xiàn)給用戶所經(jīng)歷的各個節(jié)點,以及作為技術(shù)人能在各節(jié)點中進行優(yōu)化的點, 通過這些技術(shù)優(yōu)化點,在研發(fā)過程中不斷創(chuàng)新,推動產(chǎn)品性能、用戶體驗的提升,來實現(xiàn)業(yè)務(wù)的增長,創(chuàng)造可持續(xù)的價值。

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    225

    瀏覽量

    20304
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1040

    瀏覽量

    36116
  • URL
    URL
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    15795
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    老電視如何安裝瀏覽器?

    2017年購買的夏普老電視,1.5G+8G存儲,網(wǎng)上下的瀏覽器APK文件在電視內(nèi)打開就彈出“解析程序包出現(xiàn)問題”。 未知來源選項已打開,存儲空間清空到只剩下三個應(yīng)用(只占用300M左右),基本可
    發(fā)表于 06-01 18:57

    edge瀏覽器識別 latex語法插件

    默認的瀏覽器是沒有l(wèi)atex識別功能的,容易顯示為亂碼或者源碼,無法正常識別。本插件需要瀏覽器的擴展程序菜單下安裝,能在edge下完美運行。本插件是免費插件。
    發(fā)表于 03-17 18:03 ?1次下載

    芯片前端后端制造工藝的區(qū)別

    通常,我們將芯片的生產(chǎn)過程劃分為前端制程和后端制程兩大階段,其中前端制程專注于芯片的制造,而后端制程則關(guān)注于芯片的封裝。
    的頭像 發(fā)表于 02-12 11:27 ?1094次閱讀
    芯片<b class='flag-5'>前端</b>和<b class='flag-5'>后端</b>制造工藝的區(qū)別

    E2000 Speedometer測試瀏覽器性能

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

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

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

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

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

    Chrome瀏覽器優(yōu)化Android性能,驍龍8至尊版表現(xiàn)突出

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

    OpenAI醞釀創(chuàng)新:計劃開發(fā)集成聊天機器人的瀏覽器

    近日,人工智能領(lǐng)域的佼佼者OpenAI正醞釀著一項可能改變瀏覽器行業(yè)格局的重大創(chuàng)新——開發(fā)一款能夠與其聊天機器人無縫結(jié)合的網(wǎng)絡(luò)瀏覽器。 據(jù)知情人士透露,OpenAI已與多家知名網(wǎng)站和應(yīng)用程序開發(fā)商
    的頭像 發(fā)表于 11-22 11:06 ?689次閱讀

    AWTK 最新動態(tài):支持瀏覽器控件

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

    寫一個Chrome瀏覽器插件

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

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

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

    要了解下大模型知識

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

    谷歌Chrome瀏覽器新增三大AI功能,提升用戶體驗

    谷歌近日宣布,在其廣受歡迎的Chrome瀏覽器中引入了三項前沿的AI技術(shù)功能,旨在為用戶提供更加智能、便捷的瀏覽體驗。這些新功能由Gemini技術(shù)強力驅(qū)動,目前已在Chrome桌面版上線,標志著谷歌在AI與瀏覽器融合方面的又一重
    的頭像 發(fā)表于 08-05 11:26 ?1035次閱讀

    不只是前端后端、產(chǎn)品測試需要了解瀏覽器知識

    一、我們?yōu)槭裁?b class='flag-5'>要了解瀏覽器? 1. 對于前端開發(fā)者 1.瀏覽器是用戶體驗的第一線。我們需要了解瀏覽器
    的頭像 發(fā)表于 07-01 18:03 ?737次閱讀
    <b class='flag-5'>不只是</b><b class='flag-5'>前端</b>,<b class='flag-5'>后端</b>、<b class='flag-5'>產(chǎn)品</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>

    如何用python調(diào)用瀏覽器的視頻?

    linda 我想用python調(diào)用瀏覽器的視頻。 我使用cv2調(diào)用視頻流,但是失敗了。 URL=\"http://192.168.4.1/face_stream\" cap = cv2.VideoCapture(URL) print(cap.isOpened()) 輸出了false,請問該怎么實現(xiàn)?
    發(fā)表于 06-26 08:15

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品