浅析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 相关文章推荐
在IE模态窗口中自由查看HTML源码的方法
Mar 08 Javascript
dojo 之基础篇(二)之从服务器读取数据
Mar 24 Javascript
jquery 学习笔记 传智博客佟老师附详细注释
Sep 12 Javascript
DOM 脚本编程中的兄弟节点
Oct 31 Javascript
Javascript 中介者模式实例
Dec 16 Javascript
zShowBox 图片放大展示jquery版 兼容性
Sep 24 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
一个不错的字符串转码解码函数(自写)
Jul 31 Javascript
bootstrap基础知识学习笔记
Nov 02 Javascript
jQuery中的deferred使用方法
Mar 27 jQuery
使用vue-infinite-scroll实现无限滚动效果
Jun 22 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 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
不重新编译PHP为php增加openssl模块的方法
2011/06/14 PHP
php网页病毒清除类
2014/12/08 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
Three.js源码阅读笔记(Object3D类)
2012/12/27 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
NodeJS整合银联网关支付(DEMO)
2016/11/09 NodeJs
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
python @property的用法及含义全面解析
2018/02/01 Python
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
对TensorFlow的assign赋值用法详解
2018/07/30 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
使用css创建三角形 使用CSS3创建3d四面体原理及代码(html5实践)
2013/01/06 HTML / CSS
印度在线购物网站:Paytmmall
2019/07/24 全球购物
员工年终演讲稿
2014/01/03 职场文书
员工工作表扬信范文
2014/01/13 职场文书
给分销商的致歉信
2014/01/14 职场文书
会计电算化学生个人的自我评价
2014/02/08 职场文书
小学一年级学生评语
2014/04/22 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
python脚本框架webpy的url映射详解
2021/11/20 Python