日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

页面从输入 URL 到页面加载显示完成

發(fā)布時間:2025/3/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 页面从输入 URL 到页面加载显示完成 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這題勝在區(qū)分度高,知識點覆蓋廣,再不懂的人,也能答出幾句, 而高手可以根據(jù)自己擅長的領(lǐng)域自由發(fā)揮,從URL規(guī)范、HTTP協(xié)議、DNS、CDN、數(shù)據(jù)庫查詢、 到瀏覽器流式解析、CSS規(guī)則構(gòu)建、layout、paint、onload/domready、JS執(zhí)行、JS API綁定等等;

詳細版:

1、瀏覽器會開啟一個線程來處理這個請求,對 URL 分析判斷如果是 http 協(xié)議就按照 Web 方式來處理;

2、調(diào)用瀏覽器內(nèi)核中的對應方法,比如 WebView 中的 loadUrl 方法;

3、通過DNS解析獲取網(wǎng)址的IP地址,設(shè)置 UA 等信息發(fā)出第二個GET請求;

4、進行HTTP協(xié)議會話,客戶端發(fā)送報頭(請求報頭);

5、進入到web服務器上的 Web Server,如 Apache、Tomcat、Node.JS 等服務器;

6、進入部署好的后端應用,如 PHP、Java、JavaScript、Python 等,找到對應的請求處理;

7、處理結(jié)束回饋報頭,此處如果瀏覽器訪問過,緩存上有對應資源,會與服務器最后修改時間對比,一致則返回304;

8、瀏覽器開始下載html文檔(響應報頭,狀態(tài)碼200),同時使用緩存;

9、文檔樹建立,根據(jù)標記請求所需指定MIME類型的文件(比如css、js),同時設(shè)置了cookie;

10、頁面開始渲染DOM,JS根據(jù)DOM API操作DOM,執(zhí)行事件綁定等,頁面顯示完成。

簡潔版:

1、瀏覽器根據(jù)請求的URL交給DNS域名解析,找到真實IP,向服務器發(fā)起請求;

2、服務器交給后臺處理完成后返回數(shù)據(jù),瀏覽器接收文件(HTML、JS、CSS、圖象等);

3、瀏覽器對加載到的資源(HTML、JS、CSS等)進行語法解析,建立相應的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如HTML的DOM);

4、載入解析到的資源文件,渲染頁面,完成。

總結(jié):

1、瀏覽器地址欄輸入url

2、瀏覽器會先查看瀏覽器緩存--系統(tǒng)緩存--路由緩存,如有存在緩存,就直接顯示。如果沒有,接著第三步

3、域名解析(DNS)獲取相應的ip

4、瀏覽器向服務器發(fā)起tcp連接,與瀏覽器建立tcp三次握手

5、握手成功,瀏覽器向服務器發(fā)送http請求,請求數(shù)據(jù)包

6、服務器請求數(shù)據(jù),將數(shù)據(jù)返回到瀏覽器

7、瀏覽器接收響應,讀取頁面內(nèi)容,解析html源碼,生成DOm樹

8、解析css樣式、瀏覽器渲染,js交互



。。。。。。。。。。。。

1、瀏覽器先檢查URL,先判斷協(xié)議,再對URL進行安全檢查,最后調(diào)用瀏覽器內(nèi)核的loadURL方法

2、瀏覽器內(nèi)核先查看緩存,然后設(shè)置HTTP協(xié)議,最后發(fā)送http請求

3、通過DNS拿到請求服務器IP地址,然后調(diào)用socket API對數(shù)據(jù)進行底層協(xié)議的封裝,將http數(shù)據(jù)包裝TCP/UDP包頭,在封裝IP包頭

4、將封裝好的數(shù)據(jù)包從本級網(wǎng)卡發(fā)送到服務器

5、服務器接收到瀏覽器請求后進行處理,然后返回html文件

6、瀏覽器接收到html文件,可能需要解壓(涉及編碼格式)

7、瀏覽器開始載入html代碼,發(fā)現(xiàn)<head>標簽內(nèi)有一個<link>標簽引用外部css文件

8、瀏覽器又發(fā)出css文件的請求,等待服務器返回這個css文件;附:在下載css文件的過程中,不會堵塞頁面HTML加載和渲染

9、瀏覽器又發(fā)現(xiàn)一個<script>標簽引用外部js文件,發(fā)出js文件請求,服務器返回這個js文件;附件:在下載js文件過程中,會堵塞頁面HTML的加載和渲染,即為默認的同步腳本

10、瀏覽器執(zhí)行返回的js文件腳本,此時頁面的HTML加載和渲染都被堵塞

11、瀏覽器進入<body>,此時已經(jīng)有了外部css文件,一邊加載HTML,一邊渲染;

12、遇到<img>標簽的時候,瀏覽器向服務器發(fā)送請求,不用等圖片下載完,繼續(xù)加載和渲染后面的HTML

13、當服務器返回圖片的時候,由于圖片大小會影響后面的文檔排版,所以瀏覽器會回頭重新渲染<img>標簽后的所有HTML

14、遇到嵌入<script>時,瀏覽器會停止頁面的加載和渲染,改去執(zhí)行<script>中的腳本,如果腳本中有改變DOM樹的代碼,那么瀏覽器會重新渲染被改變部分的html

15、直到最后解析到文檔最后,瀏覽器加載頁面才算完成。

總結(jié)

以上是生活随笔為你收集整理的页面从输入 URL 到页面加载显示完成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。