@wjt blog @wjt blog
首页
  • react
  • react-native
  • webpack
  • 其他
  • docker
  • liunx命令
读书
收藏

@wjt

遇见知识
首页
  • react
  • react-native
  • webpack
  • 其他
  • docker
  • liunx命令
读书
收藏
  • react

  • react-native

  • webpack

  • 其他

    • 从输入url到页面展示我们可以做那些优化?
    • vscode插件code-template实现
    • qiankun搭建微前端步骤
  • 前端
  • 其他
@wjt
2023-07-06

从输入url到页面展示我们可以做那些优化?

从输入url到页面展示有几步骤?需要浏览器的那些能力参与?

  1. 解析用户输入的内容。如果内容符合url规则就会添加协议变成完整的url进行访问。否则就使用浏览器默认的搜索引擎搜索用户输入的内容。
  2. 当进行url访问的时候。浏览器进程会通过进程间通信(IPC)把url发送给网络进程进行真正的网络请求。
  3. 在网络进程中,网络进程会检查资源缓存是否存在。如果存在直接返回资源。如果不存在则通过DNS解析ip(访问过一次后会使用DNS缓存)。用ip来访问服务器资源 (优化点1:使用缓存,减少重新请求资源消耗的时间)。如果重定向会从第2步重新开始。
  4. 网络进程获取到响应头信息后,会根据响应头Content-Type的不同做不同的处理。当Content-Type是text/html时,浏览器进程会准备渲染进程。随后建立网络进程和渲染进程数据传输的管道。当数据传输完成后会进入渲染阶段(大多数的优化都在这个阶段)。

渲染阶段?都有那些流程?

  1. 解析html,生成dom树。(建立网络进程和渲染进程数据传输的管道后。html解析器会在数据传输的同时解析html。而不是等整个文档加载完成才解析html)。
  • 在解析html过程中如果遇到script标签会停止对dom的解析。针对引入的script标签会等待下载执行完成才继续进行dom解携 (优化点2:使用CDN加速script文件的加载、针对没有操作dom的代码设置延迟加载async 或 defer、使用preload/prefetch预加载资源)。
  1. 解析css,构建CSSOM(CSSOM 体现在 DOM 中就是document.styleSheets)。
  2. 基于dom树和CSSOM经过样式计算和布局计算生成布局树。
  3. 基于布局树对特定的节点生成层树。拥有层叠上下文属性(position: fiexd/absolute、z-index、filter、opacity)或者需要裁剪的元素(overflow)会创建为一个图层。
  4. 为每个图层生成绘制列表,并将其提交到合成线程。
  5. 合成线程将图层分成图块,并在光栅化线程池中将图块转换成位图。
  6. 合成线程发送绘制图块命令 DrawQuad 给浏览器进程。
  7. 浏览器进程根据 DrawQuad 消息生成页面,并显示到显示器上。
构建速度和打包体积优化
vscode插件code-template实现

← 构建速度和打包体积优化 vscode插件code-template实现→

最近更新
01
find
07-06
02
cp
07-06
03
vim
07-06
更多文章>
Theme by Vdoing | Copyright © 2023-2023 @wjt | 浙ICP备2023018372号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式