利用 JavaScript 延时加载提升网页性能

慢慢来
慢慢来
发布时间:2026-10-14| 4人浏览过
原创

当网页中堆积大量 JavaScript 代码时,浏览器解析和执行脚本的过程会阻塞渲染线程,导致用户看到白屏时间过长或交互响应滞后。为了解决这一问题,开发者可以采取多种非同步加载策略,其中最具代表性的包括利用定时器延迟加载外部文件、调整脚本在 DOM 树中的位置,以及采用动态插值技术推迟代码执行。

核心目标与准备工作

优化核心在于打破“文档流”对 JavaScript 执行的强依赖。在操作前,需准备一个包含冗长脚本的 HTML 页面,并在浏览器开发者工具的 Network 面板中观察资源请求顺序,或在 Performance 面板分析主线程阻塞情况,以便量化优化效果。

具体实施方法

第1步:使用 setTimeout 延迟加载外部 JS 文件

目的:让页面先完成基础布局和内容渲染,稍后再加载体积较大的第三方或功能型脚本(如广告、统计代码)。

入口与动作:

  1. 在 <head> 或页面头部预留一个空的 <script> 标签占位符,并赋予唯一 ID:
<script type="text/javascript" src="" id="my"></script>

随后编写控制逻辑。获取该 DOM 元素引用后,定义修改其 src 属性的函数,并通过 setTimeout 设定延迟时间(毫秒)。

<script type="text/javascript">
var js = document.getElementById("my"); 
function addjs(){
    js.src = "js/js.js";
}
// 设置延迟时间为 3000 毫秒(3秒)
setTimeout(addjs, 3000);
</script>

完成状态:控制台可见 JS 文件在初始化 3 秒后才发起 HTTP 请求,页面在此期间无需等待该文件下载即可响应用户操作。

第2步:调整 Script 标签位置至 Body 底部

目的:避免 JS 脚本在解析 HTML 结构时被强行阻断,使浏览器能够优先构建 DOM 树和 CSSOM。

入口与动作:

  1. 检查当前项目的所有脚本引入方式。
  2. 移除原本位于 <head> 内部或内容中间的常规 <script src="..."> 引用。
  3. 将所有脚本引用统一移动至 <body> 标签闭合之前。

原理说明:按照标准的 HTML 解析流程,浏览器遇到 <script> 时会暂停解析后续 HTML 直至脚本下载完毕。将其置于末尾,意味着页面上的文字、图片和布局早已呈现给用户,实现了“内容优先显示”。

第3步:采用 DOM 动态替换实现最后加载

目的:针对页面上特定区域(如广告位)的复杂逻辑,通过预置占位符和后台数据块分离的方式,按需注入代码。

入口与动作:

首先,在需要展示内容的区域放置一个仅带有占位信息的 <span> 或 <div>:

<SPAN id=L4EVER>LOADING...</SPAN>

其次,在页面的最底端隐藏存放实际 JS 代码的容器(不直接触发脚本执行,而是作为纯文本/HTML存在):

<SPAN class=spanclass id=AD_L4EVER>
你的JS代码在这里!</SPAN>

最后,在页面底部添加一段脚本,判断前置元素是否存在。若存在,则将隐藏容器的内容赋值给占位符,并清空原始隐藏容器:

<script>
L4EVER.innerHTML = AD_L4EVER.innerHTML;
AD_L4EVER.innerHTML = "";
</script>

进阶封装:对于更复杂的场景,可以封装成判定函数(类似 PHP 版的 chkdiv),确保目标 DIV 存在后才进行 innerHTML 的置换,防止脚本报错。

风险提醒与排错建议

  • 依赖冲突:延迟加载的脚本可能会在其预期被调用的时间点仍未就绪。例如,如果某个库需要在页面加载完成后立即执行初始化,强制延迟会导致报错。请在调用处加入简单的存在性检测(window.onload 事件)。
  • SEO 影响:搜索引擎爬虫对客户端动态生成的内容读取能力有限。关键 SEO 标题和结构化数据不应依赖于这种 JS 最后加载的逻辑,以免被遗漏收录。
  • XSS 安全:在使用 innerHTML 动态插入字符串时,如果内容来源于不可信的用户输入,请务必进行过滤,以防跨站脚本攻击。

总结

通过合理运用定时器(setTimeout)、DOM 结构调整以及动态内联替换等手段,可以有效缓解因大量 JavaScript 代码造成的页面卡顿。掌握这些延迟加载技巧,有助于在保障功能完整性的前提下,最大化提升前端页面的访问速度与流畅度。

以上就是利用 JavaScript 延时加载提高速度的详细内容,更多关于前端页面优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。