从输入一个URL到页面展示这期间发生了什么?

从输入一个URL到页面展示这期间发生了什么?

chrome进程

我们先了解一下多进程浏览器打开页面后都有哪些进程?从图中可以看出,现在的chrome浏览器包括:一个浏览器主进程、多个渲染进程、多个插件进程、网络进程、1个GPU进程。

1.浏览器进程:主要负责界面显示、用户交互、子进程管理、提供存储功能等功能

2.渲染进程:将HTML、CSS、Javascript转换为用户可以交互的界面,默认情况下,chrome会为每个Tab标签提供一个渲染进程,渲染进程是运行在沙箱模式下

3.GPU进程:chrome的UI界面都选择使用GPU来绘制

4.网络进程:负责页面的网络资源加载

5.插件进程:负责插件的运行,因为插件的易崩溃,所以需要通过插件进程来隔离,已保证插件崩溃时,不会影响浏览器以及其他页面资源

(如果是同一站点,从A页面点到B页面,此时,两个页面同用一个渲染进程,如果两个页面的站点不同,会是两个渲染进程,如果页面中有iframe,iframe也会自己占用一个进程)

从用户输入URL到页面显示发生了什么?

  1. 用户输入URL,浏览器会根据用户输入的信息判定是搜索还是网址。如果是搜索内容,就将搜索内容+默认搜索引擎合成新的URL;如果用户输入的内容符合URL规则,浏览器就会根据URL协议,在这段内容上加上协议合成合法的URL。

  2. 用户输入完内容,按下回车键,浏览器导航栏显示loading状态。但是此时页面还是呈现前一个页面,这是因为新页面的响应数据还没有获得。

  3. 浏览器进程通过进程间通信(IPC)把URL发送给网络请求。

  4. 网络请求接收到URL请求后会检查本地缓存是否缓存了该资源。如果有,那么拦截请求,返回状态值200,并将该资源返回给浏览器进程。

  5. 否则的话,网络进程会向WEB服务器发起http请求(网络请求),流程如下:
    5.1:进行DNS解析,返回对应的域名,对应的IP和端口号。如果之前DNS数据缓存服务器缓存过当前域名信息,就会直接返回缓存信息;否则发起请求获取根据域名解析出来的IP和端口号;
    5.2:利用IP地址和服务器建立TCP连接。(由于chrome机制,统一域名同时最多只能建立6个TCP连接,少于6个可直接建立)
    5.3:建立请求头信息。http请求加上TCP头部----包括源端口号,目的程序端口号和用于校验数据的完整性的序号,向下传输。
    5.4:发送请求头信息。
    5.5:服务器响应后,网络进程接收响应头和响应信息,并解析响应内容。

  6. 网络进程解析响应流程。
    6.1:检查状态码,如果为301/302,则需重定向。从Location中读取地址,重新操作第四步。
    6.2:为200,需要检查响应类型Content-Type,如果为字节流类型,则将该请求提交给下载管理器,改导航流程结束,也不会进行后续的渲染;如果是html,渲染进程将会准备。

  7. 渲染进程准备:浏览器会检查当前URL是否和之前打开的渲染进程根域名是否相同,如果相同,则复用原来的进程,如果不同,则开启新的渲染进程。

  8. 浏览器会发出“提交文档”的消息给渲染进程,渲染进程收到消息后,会和网络进程建立传输数据的“管道”,文档数据传输完成后,渲染进程会返回“确认提交”的消息给浏览器进程。

  9. 浏览器进程收到“确认提交”的消息后,会更新浏览器的页面状态,包括了安全状态,地址栏的URL,前进后退的历史状态,并更新web页面,此时web页面是空白页。

  10. 渲染进程对文档进行页面解析及子资源加载:
    10.1:HTML通过HTML解析器转成DOM Tree;
    10.2:CSS按照CSS规则和CSS解析器转成CSSOM Tree;
    10.3:两个Tree相结合,形成Render Tree;
    10.4:通过Layout可以计算出每个元素的具体宽高,结合起来,开始绘制,最后显示在新页面中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在浏览器输入网址并按下回车键后,会发生以下一系列的步骤: 1. URL解析:浏览器会解析输入的网址(URL),将其分解为协议(如HTTPHTTPS)、主机名(如www.example.com)和路径等组成部分。 2. DNS解析:浏览器将主机名发送给DNS服务器,以获取主机名对应的IP地址。DNS服务器将响应该请求,提供与主机名对应的IP地址。 3. 建立TCP连接:浏览器使用HTTP协议,通过建立TCP连接与服务器通信。它会使用服务器的IP地址和默认的HTTP端口(80)来建立连接。 4. 发送HTTP请求:浏览器向服务器发送HTTP请求,其包含请求的方法(GET、POST等)、路径、协议版本、请求头部等信息。 5. 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行处理。这可能涉及到读取文件、查询数据库或执行其他逻辑。 6. 服务器发送HTTP响应:服务器处理完请求后,会生成一个HTTP响应。响应包含状态码、响应头部和响应体等信息。状态码表示服务器对请求的处理结果,如200表示成功,404表示文件未找到等。 7. 接收响应:浏览器收到来自服务器的HTTP响应后,会根据响应头部的信息进行处理。这可能包括解析HTML、CSS和JavaScript文件,或者下载其他资源(如图片、视频等)。 8. 渲染页面:浏览器使用收到的HTML、CSS和JavaScript等资源来渲染页面。它会解析HTML结构,构建DOM树,并应用CSS样式。然后,它会执行JavaScript代码,以处理交互和动态内容。 9. 显示页面:最后,浏览器将渲染好的页面显示给用户。用户可以通过浏览器与页面进行交互,点击链接、填写表单等操作。 总结起来,当你输入网址并按下回车键时,浏览器会通过DNS查询获取服务器的IP地址,然后通过TCP连接与服务器建立通信。浏览器发送HTTP请求,服务器处理请求并返回HTTP响应。浏览器接收响应后,解析并渲染页面,最终将页面显示给用户。 希望能回答你的问题!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值