You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量加载页面初始化所需JS,其余JS在DOM加载后批量加载?

搞定脚本并行加载问题:实现初始+DOM就绪后的并行下载

嘿,我明白你现在的困扰——明明按想法放置了核心脚本,也加了DOM加载后的监听器,但脚本就是没法并行下载。别着急,咱们一步步来解决:

一、先搞定初始核心脚本的并行下载

对于页面加载必需的核心脚本,直接把它们放在<head>标签里就行啦!现代浏览器默认会并行下载多个脚本文件,只要你不是用动态加载的方式逐个添加,它们会同时开始下载的。比如:

<head>
  <!-- 这些核心脚本会同时开始下载 -->
  <script src="./core-script-1.js"></script>
  <script src="./core-script-2.js"></script>
  <script src="./core-script-3.js"></script>
</head>

要是这些脚本不需要阻塞DOM解析,还可以给它们加上async属性,但如果是页面渲染必须依赖的脚本,保持默认引入方式就好,浏览器依然会并行下载它们。

二、DOM就绪后,让第三方脚本也并行起飞

你之前的问题大概率出在动态加载的方式上——如果是逐个创建脚本元素并添加到DOM,有些浏览器会串行处理这些请求,导致没法同时下载。咱们换个方式,一次性创建所有需要的脚本元素,让浏览器同时发起请求:

// 等DOM完全加载好再动手
document.addEventListener('DOMContentLoaded', () => {
  // 把所有第三方脚本的URL列成数组
  const thirdPartyScripts = [
    'https://your-cdn.com/script-a.js',
    'https://your-cdn.com/script-b.js',
    'https://your-cdn.com/script-c.js'
  ];

  // 遍历数组,一次性创建并插入所有脚本
  thirdPartyScripts.forEach(src => {
    const scriptTag = document.createElement('script');
    scriptTag.src = src;
    // 加上async,让脚本下载完就执行,不阻塞其他操作
    scriptTag.async = true;
    document.body.appendChild(scriptTag);
  });
});

这样写的话,浏览器会同时发起所有第三方脚本的下载请求,完美实现并行加载。

为啥之前的方法没用?

如果你的代码是先创建第一个脚本、添加到DOM,等它加载完再处理第二个,那自然是串行的。而上面的方式是一次性把所有脚本元素都插入DOM,浏览器会立刻并行处理这些请求。

三、额外检查点

  • 打开浏览器的F12网络面板,看看脚本的请求开始时间是不是差不多——如果还是串行,可能是服务器端限制了并发请求数,但这种情况很少见。
  • 如果第三方脚本之间没有依赖关系,async属性一定要加上,这样脚本下载完成后就会执行,不会拖慢页面交互。

附上你提供的截图参考:
核心脚本加载状态
第三方脚本加载状态
从截图里能看到你的第二组脚本是串行加载的,用上面的方法应该就能解决啦!

内容的提问来源于stack exchange,提问作者Anandhaprabhu Subramaniam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:59:52