什么是Render blocking resources?
根据前几篇提到的浏览器渲染过程,有了DOM 和 CSSOM 之后,浏览器才开始渲染。所以挡在渲染前面的资源都叫做阻塞渲染的资源。
这些资源包括:
- HTML,当然了,没有dom,就没什么可渲染的;
- CSS,根据浏览器渲染过程看到,没有CSSOM,也不会开始渲染;
- JavaScript,因为JS有可能改变页面内容和样式,所以浏览器会等待JS加载完成并解析运行后才继续向下解析文档。
从以上可以知道:
- DOM节点越多,浏览器耗时(下载、解析)越多(优化建议:快看天猫首页源代码——2016年11月16日,首屏以外的DOM节点动态生成);
- CSS内容越多,文件越多,浏览器下载、解析时间越长(优化建议:看淘宝首页源代码——2016年11月16日,inline关键CSS,其他CSS异步加载);
- JavaScript的话,只要不是渲染页面必须的,都放到文档底部,就不会阻塞渲染。
另外:图片不会Block render。
参考文档: