浅析js预加载/延迟加载


Posted in Javascript onSeptember 25, 2014

Pre loader 预加载一般有两种常用方式:xhr和动态插入节点的方式。动态插入节点是最为简单也最为广泛的一种异步加载方式,然后使用动态插入节点方法加载的文件都会 在加载后立即执行,javascript的执行一方面会占用浏览器js执行进程,另一方面也可能改变页面结构,而css 的执行更有可能让整个页面变化。xhr方式虽然不会执行脚本,但是由于同域的限制

Lazy loader方式在一些图片非常多的网站中非常有用,在浏览器可视区域外的图片不会被载入,直到用户将页面滚动到它们所在的位置才加载,这样对于含有很多 图片的比较长的网页来说,可以加载的更快,并且还能节省服务器带宽。jQuery插件中也有插件来实现该功能。

在腾讯的QQ空间和微博中就采用这样技术实现,在大访问量的网站,这样就相对可以减少服务器的压力,在用户访问到所见区域和下面内容时候才去请求。而不是传统的一次把整个页面下载过来,在下载过程中存在着用户等待内容呈现。

IE中使用new Image().src 去预加载文件。
其他浏览器使用动态插入document.createElement('object')标签来完成加载。

说明:
1. new Image().src 之所以不能在ff中使用是因为ff对图片实现了一套单独的缓存。 同时safari和chrome看起来也没有被缓存。
2. 动态插入object 标签需要插入到非head部分,以触发加载。
3. ie7 ie8 也可以通过一些代码使用动态object加载文件。

Javascript 相关文章推荐
javascript中CheckBox全选终极方案
May 20 Javascript
浅析AngularJS Filter用法
Dec 28 Javascript
Ionic如何实现下拉刷新与上拉加载功能
Jun 03 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
Dec 01 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
你真的了解BOM中的history对象吗
Feb 13 Javascript
vue.js的提示组件
Mar 02 Javascript
js实现自动图片轮播代码
Mar 22 Javascript
JavaScript中in和hasOwnProperty区别详解
Aug 04 Javascript
javascript实现Emrips反质数枚举的示例代码
Dec 06 Javascript
vue组件间通信六种方式(总结篇)
May 15 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
Jun 10 Javascript
深入了解Node.js中的一些特性
Sep 25 #Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
Sep 25 #Javascript
JS小游戏之仙剑翻牌源码详解
Sep 25 #Javascript
JS小游戏之宇宙战机源码详解
Sep 25 #Javascript
JS小游戏之极速快跑源码详解
Sep 25 #Javascript
JS小游戏之象棋暗棋源码详解
Sep 25 #Javascript
我用的一些Node.js开发工具、开发包、框架等总结
Sep 25 #Javascript
You might like
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
php生成随机数的三种方法
2014/09/10 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
预加载css或javascript的js代码
2010/04/23 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
Python urls.py的三种配置写法实例详解
2017/04/28 Python
在python中画正态分布图像的实例
2019/07/08 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
python 实现目录复制的三种小结
2019/12/04 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
建筑管理专业求职信
2014/07/28 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
Nginx进程调度问题详解
2021/09/25 Servers
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL