步步走

步步走前端

马上订阅 步步走 RSS 更新: https://bubuzou.com/atom.xml

探究网页资源究竟是如何阻塞浏览器加载的

2020年12月26日 09:49

一个页面允许加载的外部资源有很多,常见的有脚本、样式、字体、图片和视频等,对于这些外部资源究竟是如何影响整个页面的加载和渲染的呢?今天我们来一探究竟。

阅读完这篇文章你将解开如下谜团:

  • 如何用 Chrome 定制网络加载速度?
  • 图片/视频/字体会阻塞页面加载嘛?
  • CSS 是如何阻塞页面加载的?
  • JS 又是如何阻塞页面加载的?
  • JS 一定会阻塞 DOM 加载嘛?
  • defer 和 async 是什么?又有何特点?
  • 动态脚本会造成阻塞嘛?
  • 阻塞是怎么和 DOMContentLoaded 与 onload 扯上关系的?

测试前环境准备

测试之前我们需要对浏览器下载资源的速度进行控制,将它重新设置为 50kb/s,操作方式:

  1. 打开 Chrome 开发者工具;
  2. Network 面板下找到 Disable cache 右侧的下拉列表,然后选择 Add 添加自定义节流配置;
  3. 添加一个下载速度为 50kb/s 的配置;
  4. 最后在第二步骤中的下拉列表选择刚刚配置的选项即可;
  5. 注意:如果当前选择的自定义选项被修改了,则需要切换到别的选项再切回来才可生效。

为什么是这个速度?因为如下的一些资源,比如图片、样式或者脚本体积都是 50kb 的好几倍,方便测试。

图片会造成阻塞嘛

直接写个示例来看下结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html lang="en"...

剩余内容已隐藏

查看完整文章以阅读更多