同步载入

在介绍js异步载入之前。我们先来看看什么是js同步载入。我们平时最常使用的就是这样的同步载入形式:

<script src="http://XXX.com/script.js"></script>

同步模式。又称堵塞模式,会阻止浏览器的兴许处理,停止了兴许的解析。因此停止了兴许的文件载入(如图像)、渲染、代码运行。一般的script标签(不带async等属性)载入时会堵塞浏览器,也就是说,浏览器在下载或运行该js代码块时。后面的标签不会被解析,比如在head中加入一个script,但这个script下载时网络不稳定,非常长时间没有下载完毕相应的js文件,那么浏览器此时一直等待这个js文件下载,此时页面不会被渲染,用户看到的就是白屏。

曾经的一般建议是把<script>放在页面末尾</body>之前,这样尽可能降低这样的堵塞行为。而先让页面展示出来。

异步载入

它同意无堵塞资源载入。而且使 onload 启动更快,同意页面内容载入。而不须要刷新页面,也能够依据页面内容延迟载入依赖。

常见异步载入举例:

(Script DOM Element)

(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'http://yourdomain.com/script.js';
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
})();

这样的方法是在页面中<script>标签内,用 js 创建一个 script 元素并插入到 document 中。

这样就做到了非堵塞的下载 js 代码。

延迟载入(lazy loading)

前面攻克了异步载入(async loading)问题,再谈谈什么是延迟载入。
延迟载入:有些 js 代码并非页面初始化的时候就立马须要的,而稍后的某些情况才须要的。延迟载入就是一開始并不载入这些临时不用的js,而是在须要的时候或稍后再通过js 的控制来异步载入。

也就是将 js 切分成很多模块,页面初始化时仅仅载入须要马上运行的 js ,然后其他 js 的载入延迟到第一次须要用到的时候再载入。
特别是页面有大量不同的模块组成,非常多可能临时不用或根本就没用到。

就像图片的延迟载入,在图片出如今可视区域内时(在滚动栏下拉)才载入显示图片。

异步载入。须要将全部 js 内容按模块化的方式来切分组织,当中就存在依赖关系,而异步载入不保证运行顺序。​js模块化攻克了这个问题,请移步 了解模块化开发 

页面优化——js异步载入的更多相关文章

  1. ASP.NET页面优化,提高载入速度[转]

      ASP.NET页面载入速度提高的一些做法: 1.采用 HTTP Module 控制页面的生命周期. 2.自定义Response.Filter得到输出流stream生成动态页面的静态内容(磁盘缓存) ...

  2. lazyload.js实现图片异步载入

    所谓图片异步加载,意思是不用一次把图片全部加载完,你可以叫它延迟加载,缓冲加载都行. 看看你有没有这种需求:某篇文章图片很多,如果在载入文章时就载入所有图片,无疑会延缓载入速度,让用户等更久,所以,我 ...

  3. SpringMVC+Jquery -页面异步载入数据

    背景: 做项目时涉及到页面.当我打算在controller中传一个list到页面,然后通过<c:foreach>循环遍历出来时,同事说:你这样每次都要刷新.这都是几百年前使用的技术了.你用 ...

  4. 异步载入JS

      平时最常使用的就是这样的同步载入形式:    <script src="http://yourdomain.com/script.js"></script&g ...

  5. 高效率http页面优化法则一【JS对DOM的操作】

    高效http页面优化法则一很多人都认为JS的效率太慢了,都不愿意用js来实现相对困难一点的程序逻辑.在这里我要说的是其实js的效率并不慢,慢的是DOM,如果操作好DOM,你的js效率将提高接近千倍(这 ...

  6. 本人为项目组制定的一份页面优化指南(easyui页面优化方案)

    #本人为项目组制定的一份页面优化指南(easyui页面优化方案) ##背景 这是一篇我之前为项目组制定的页面优化指南,主要是面向表单页面,典型的像[注册用户](https://passport.cnb ...

  7. 转:web前端面试题合集 (Javascript相关)(js异步加载详解)

    1. HTTP协议的状态消息都有哪些? 1**:请求收到,继续处理2**:操作成功收到,分析.接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务器执行一个完全有效请 ...

  8. structs2注解+jsp+ajax实现post异步载入select

    流程: 1.点击载入btn发起异步请求post 2.后台处理请求返回数据 3.前端获取数据成功,对数据进行处理 前端: html:首先要导入jq包,不然怎么用ajax呢. <script typ ...

  9. JS异步加载的三种方案

    js加载的缺点:加载工具方法没必要阻塞文档,个别js加载会影响页面效率,一旦网速不好,那么整个网站将等待js加载而不进行后续渲染等工作. 有些工具方法需要按需加载,用到再加载,不用不加载. 一.def ...

随机推荐

  1. Binary Tree Postorder Traversal——重要的基本的算法

    Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...

  2. 前端读者 | 如何判断Javascript对象是否存在

    本文来自@阮一峰 Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言 ...

  3. macos不能打开windows samba共享问题(转载)

    转自:https://www.macx.cn/thread-2095377-1-1.html?mod=viewthread&tid=2095377&extra=page%253D1&a ...

  4. ARK登录信息

    101,389B,382:仙境353:中心岛380:畸变404:孤岛371:焦土487:灭绝 eaglexmw:389b[65493013] : 初级畸变,高级飞升,TEK全解(有380权限),黑鬼, ...

  5. Win7 + VirtualBox + CentOS (服务器版 无桌面) 使用共享文件夹

    http://jingyan.baidu.com/article/b2c186c8ffb607c46ff6ff61.html

  6. javascript 的回调函数

    既然函数可以像其他数据那样赋值给某个个变量,可以被定义.删除.拷贝,那为什么就不能被当成参数传递给其他函数呢? 下面的示例中,我们定义了一个以两个函数为参数的函数.该函数会分别执行这两个参数函数,并返 ...

  7. Java工具类-转换字符编码

    package common; /** *字符串处理公用类 */ public class DealString { /** * 转换字符编码 由“iso-8859-1”西文转换为简体中文 */ pu ...

  8. 动若脱兔:深入浅出angr--初步理解符号执行以及angr架构

    一:概论 angr作为符号执行的工具,集成了过去的许多分析方式,它不仅能进行动态符号执行,而且还能进行很多静态分析,他在分析二进制程序中能发挥很大的作用,下面为一些应用: 1:利用符号执行探究执行路径 ...

  9. RabbitMQ (十五) 镜像集群 + HAProxy1.7.8 负载均衡

    RabbitMQ 默认的集群模式,也就是普通模式,最大的问题就在于存储队列完整数据的节点一旦宕机, 如果是非持久化队列,则消息丢失;如果是持久化队列+持久化消息,则必须等该节点恢复. 所以后来 Rab ...

  10. uva 10910(子集和问题)

    Marks Distribution Time limit: 3.000 seconds In an examination one student appeared in N subjects an ...