经典面试题之URL到页面加载的过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
经典⾯试题之URL到页⾯加载的过程
也没什么好讲的,这⾥⾯的⽔有些深了,我只能写些浅薄的东西啦~
讲⼀下过程吧!
1、输⼊url(完整的url包括协议、域名、端⼝号、路径等)
2、浏览器查找当前的url是否存在缓存,并对⽐缓存是否过期(这⾥会涉及到服务器返回的状态码304,强制缓存cache-control、Expires,对⽐缓存last-Modified、Etag(资源实体标识,是哈希字符串)等)
3、DNS解析(域名解析):域名解析过程就是通过域名去查找与之对应的服务器IP的过程
(1)浏览器先检查本地hosts⽂件是否有这个url映射的IP,有就调⽤这个IP地址,完成域名解析
(2)如果没有找到,则去找本地DNS解析器缓存,查找到则返回
(3)再没找到,就去查找本地DNS服务器,找到返回
(4)如果还没找到,就向根域名服务器查找,没找到就转发给下级,层层查找,直达查找到IP
4、建⽴TCP连接(三次握⼿建⽴连接)
(1)第⼀次握⼿,建⽴连接,浏览器发⽣syn包给服务器,等待服务器确认;
(2)第⼆次握⼿,服务器收到syn包,确认浏览器syn包,并发送syn+ack包给浏览器;
(3)第三次握⼿,浏览器收到服务器syn+ack包,向服务器发送确认包,发送完毕,建⽴连接;
完成三次握⼿,浏览器和服务器就可以开始传送数据啦~
5、浏览器向服务器发送http请求
http1.0请求⽅法:GET POST HEAD
http1.1新增请求⽅法:OPTIONS PUT DELETE TRACE CONNECT
6、服务器响应http请求(包含状态码、响应头、响应体)
(1)常见状态码:
200:请求数据成功,并返回
301:永久重定向,表⽰旧地址的资源被永久的移除(资源不可访问)
302:临时重定向,表⽰旧地址的资源还可以访问,临时跳转到新地址
304:资源未修改,可⽤缓存资源
400:客户端请求语法错误
401:请求需要⾝份认证
403:服务器收到请求,但拒绝提供服务
404:请求资源不存在
405:请求⽅法被服务器禁⽌
500:服务器错误
(2)响应体返回给浏览器的资源(html、css、js、图⽚等)
7、浏览器渲染页⾯
(1)解析html构建DOM和CSSOM树,构建DOM树期间,如果遇到JS,阻塞DOM树和CSSOM树的构建,优先加载js⽂件(js会阻塞页⾯加载,所以⼀般放到html底部进⾏加载),再加载DOM树和CSSOM树
(2)构建渲染树(render Tree)
(4)页⾯渲染过程的重绘(repaint)和重排(reflow),页⾯渲染完毕后,如若js操作了DOM,浏览器会对页⾯进⾏重绘和重排
重排(reflow),也叫Layout(回流):元素的内容、结构、位置或尺⼨发⽣变化时,需要重新计算样式和渲染树,会触发重排
重绘(repaint):元素发⽣改变,如背景颜⾊、边框颜⾊、⽂字颜⾊等,会触发重绘所以重排⽐重绘成本⾼
暂时写这些吧,有不对或缺失的欢迎补充~。