2021-06-22 一次完整的HTTP请求流程以及页面优化

本文详细阐述了浏览器地址栏输入URL后发生的一系列步骤,包括DNS查询、TCP连接建立、HTTP请求发送、服务器响应及网页解析渲染。同时,讨论了网站优化策略,如减少DNS查询、合并HTTP请求、压缩资源、提前渲染和减轻解析器阻塞,以提升网页加载速度和用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试题:浏览器地址栏输入URL并回车后发生了什么?

简答:

1.浏览器根据请求的URL交给DNS域名解析,找到真实的IP,向服务器发起请求
2.服务器交给后台处理完成后返回数据,浏览器接收(静态)文件
3.浏览器对加载到的资源进行语法解析,建立相应的内部数据结构(DOM)
4.载入解析到的资源,渲染页面

1.查询IP地址

Created with Raphaël 2.3.0 查询ip地址 浏览器解析出url中的域名 浏览器中有无DNS缓存? 客户端取得IP地址 本地客户端host文件有无对应IP地址? 本地(运营商提供的)DNS服务器有无对应DNS缓存? 递归查找顶级域名(.com等),缩小范围,直到获取IP地址 yes no yes no yes no

2.建立TCP连接

3.浏览器发起http请求

4.服务器后台操作并做出http响应

TCP与HTTP连接
TCP连接:三次握手,形成客户端到服务端的稳定通道-
http请求:get请求和post请求
服务器收到http请求,后端开始工作:跨域,负载平衡
文件处理完毕,生成响应数据包:响应头+响应体
经网络传输,文件被下载到本地客户端 ,客户端开始加载

5.网页的解析与渲染

1.客户端浏览器加载html文件,从上到下解析DOM tree
2.遇到css文件,css中的url发起(第二次)http请求
3.TCP连接未关闭,可复用,直接处理http请求
4.http连接是无状态连接,客户端与服务端要重新发起请求和响应
5.请求css的过程中,解析器连续解析URL,直到遇上<script>
6.script可能改变DOM tree结构,解析器停止生成DOM tree,被js阻塞,等待js发起(第三次)http请求,然后加载
7.由于css文件可能影响JS文件的执行结果,因此需要等css文件加载完成后再执行
8.DOM tree 和CSSOM数结合形成Render Tree(渲染树)
9.Render tree 会被css阻塞,其生成后,先布局,绘制渲染树的节点属性(如位置,宽度等),然后渲染页面就会呈现信息
10.向下继续渲染,另一个js文件,改变DOM tree,Render tree从被改变的DOM开始渲染
11.向下继续渲染,碰到<img>,浏览器发起http请求,不等img加载完成就继续往下渲染(之后会回头继续渲染此部分)
12.DOM tree遇到<html>后解析停止,渲染结束

面试题:有哪些网站优化的方法?

1.减少DNS查询

将服务器域名的IP信息加入的本地host文件中

2.减少http的请求次数

对于图片:使用雪碧图
对于html,css,js:分别进行合并操作

3.减少下载时间

压缩图片
使用压缩应用,压缩文档中的空格
删除多余的语句和注释
创建自己的JS精简库和精简框架
使用本地浏览器缓存

4.提前渲染开始时间

css链接放在html头部

5.减轻解析器的阻塞

js链接放在body尾部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值