前端架构系列

深度剖析前端性能CRP

2020-07-07  本文已影响0人  羽晞yose

CRP(Critical Rendener Path,关键渲染路径)

常见面试题:输入地址栏到浏览器渲染页面,中间都经历了什么?

  1. URL解析(浏览器解析)
  2. DNS解析(域名解析)
  3. 建立TCP链接(3次握手)
  4. 发送HTPP请求
  5. 服务器处理,服务器基于HTTP响应客户端需要的内容
  6. 关闭TCP的链接通道(4次挥手)
  7. 客户端把获取的结果进行渲染
总体流程汇总示意,从上而下

URL

URL组成部分(URL/URI/URN),格式如下:
协议://域名:端口号/请求的路径名称?问号传参#哈希值
http://www.baidu.com:80/test/index.html?user=visitoer#video(不可访问)

传输协议:用来在服务器和客户端之间进行信息传输
http:超文本传输协议
https: 比HTTP更安全(SSL加密,CA证书)
ftp: 文件上传下载协议(把文件上传到服务器)

对到query(传参),常用的js处理方法有以下三组:

DNS解析

本地DNS解析(缓存),如果没有才会到网络DNS解析

DNS解析流程,虚线代表有缓存则不需要经过的步骤

DNS解析也是需要花费时间的,需要耗费20~120ms之间
DNS解析有两种方法:

  1. 分布域名解析(递归查询)
  2. 集中式域名解析(迭代查询)
集中式域名查询

tcp3次握手

客户端和服务器端建立连接,建立连接后才能进行HTTP等信息传输

发送HTPP请求和服务器处理响应

HTTP报文分为请求报文和响应报文
报文又分为:请求行 请求头 请求体

tcp4次挥手

客户端和服务器端断开连接,需要等待服务器处理完成后才完全断开

浏览器渲染

这个真的可以写一篇大文章了…包括css解析渲染方式,js解析执行等等,写不动了,给别人的链接跳转看吧~
浏览器渲染原理与过程

网络优化:

  1. DNS缓存(预解析)
    EX: <link rel="dns-prefeth" href="//cimg.imgtest.com">
    浏览器会派发一个任务去解析DNS,但浏览器会继续解析页面,允许最大请求并发数为6~7个
  2. 减少HTTP请求次数和请求资源大小
  1. 应用缓存

缓存位置:

缓存机制:

  1. 强缓存 Expires / Cache-Control

浏览器对于强缓存的处理:根据第一次请求资源时返回的响应头来确定的,但一般我们会两个都设置,以Cache-Control为准

Cache-Control: max-age= (HTTP/1.1)
Expires: 指定时间(HTTP/1.0)

强缓存
  1. 协商缓存 Last-Modified / ETag

协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程

协商缓存

参考文章:
初识网络原理: 从浏览器地址栏输入 URL 到页面渲染之间都经历了什么(这篇文章很长,但特别的详细)

上一篇 下一篇

猜你喜欢

热点阅读