转载

Web 性能优化 - 拆分初始化负载

如果把 JavaScript 分为两部分,一部分是在渲染初始页面必须的,剩下的作为另外一部分,可以在初始化的时候只加载必要的 JavaScript,其余的 JavaScript 稍后再加载。

这就会遇到一些问题:

  • 能节省多少时间?
  • 如何找到需要拆分的代码?
  • 怎样处理竞争状态?
  • 如何延迟加载其余部分的代码?

脚本阻塞并行下载

JavaScript 以行内脚本或外部脚本的形式包含在网页中,外部脚本通过 script 的 src 属性把独立文件中的 JavaScript 引入,src 定义了需要加载的外部文件的 URL,如果缓存中有脚本文件,浏览器就从缓存中读取,否则就发送 HTTP 请求获取。

当浏览器开始下载外部脚本时,在脚本下载、解析并执行完毕之前,不会开始下载任何内容,任何已经在进程中的下载都不会被阻塞。

浏览器在下载和执行脚本时出现阻塞的原因在于,脚本可能改变页面或 JavaScript 的命名空间,它们会对后续内容造成影响。

很显然,脚本是需要按顺序执行的,但是没必要按顺序下载,在脚本下载和执行完成之前还会阻塞图片和 iframe 的下载。

原文  http://mertensming.github.io/2017/01/20/performance-split-initial-pauload/
正文到此结束
Loading...