网站加载速度优化-减少白屏时间
亲测有用,值得学习了解
MDN script 标签 https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/script
方案
把首屏用不到的 js 库 script 标签 加上 async
我把mermaid.min.js
插件增加了async
减少了 160 毫秒白屏时间
script 标签 的 async 和 defer 的区别
这段话来自于 阮一峰 es6 书的内容 https://es6.ruanyifeng.com/#docs/module-loader#传统方法
defer 与 async 的区别是:
- defer 要等到整个页面在内存中正常渲染结束(DOM 结构完全生成,以及其他脚本执行完成),才会执行;
- async 一旦下载完,渲染引擎就会中断渲染,执行这个脚本以后,再继续渲染。一句话,defer 是“渲染完再执行”,async 是“下载完就执行”。
- 另外,如果有多个 defer 脚本,会按照它们在页面出现的顺序加载,而多个 async 脚本是不能保证加载顺序的。
默认不加 async 和 defer
浏览器会立即加载并执行相应的脚本。
加了 async
异步下载 js,下载完成后立即执行 js。不会堵塞页面展示。
加了 defer
异步下载 js,等待其他 js 加载和执行完,DOMContentLoaded 之前执行 js。会堵塞页面展示。
参考链接
Script 标签上使用 defer 和 async 的区别(前端面试) https://blog.csdn.net/weixin_46544034/article/details/123146915
Scripts: async, defer https://javascript.info/script-async-defer
最后
欢迎大佬纠错