因网页中图片太多可能会拖慢加载速度的解决方法
来源:互联网 发布:饼干的网络公关 编辑:程序博客网 时间:2024/06/02 18:40
因网页中图片太多可能会拖慢加载速度的解决方法
Admin
2010年9月4日名人名言:书籍使人变得思想奔放——革拉特珂夫
因网页中图片太多可能会拖慢加载速度的解决方法
目前好多大型网站都有这种效果,就是首次只加载第一屏(能看得见的)的图片,之后的图片则不加载,如果你拖动滚动条至后面则加载,这样有效的避免了因图片过多而加载慢的弊端。
JQuery为我们提供了两种方案:预加载和惰性加载。
预加载:JQuery应用:图片依次加载代码。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->$(window).bind("load", function() {
var preload = new Array();
$(".hover").each(function() {
s = $(this).attr("src").replace(/\.(.+)$/i, "_on.$1");
preload.push(s)
});
var img = document.createElement("img");
$(img).bind("load", function() {
if(preload[0]) {
this.src = preload.shift();
}
}).trigger("load");
});
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->$(window).bind("load", function() {
var preload = new Array();
$(".hover").each(function() {
s = $(this).attr("src").replace(/\.(.+)$/i, "_on.$1");
preload.push(s)
});
var img = document.createElement("img");
$(img).bind("load", function() {
if(preload[0]) {
this.src = preload.shift();
}
}).trigger("load");
});
惰性加载:JQuery插件:LazyLoad,插件使用方式:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>
调用:
$("img").lazyload();
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>
调用:
$("img").lazyload();
但是上面的插件其实还是下载了图片 也就是说http请求还是发送出去了,只不过在客户端lazyload人为的中断了图片的下载,而且拖滚动条的时候有点卡。
下面是京东用的方法(唯一的缺点是,如果是ajax分页就不起作用,lazyload插件可以),思路是这样,把img的src指向固定的一张图片,然后自定义一个src2指向真正的图片地址,然后拖滚动条的时候再把src的地址替换为src2的地址。其实上面的插件也是这种思路,只是它不需要我们手动去设置src2和src地址了,它自动在代码里面把真正的地址先赋给original了。
代码如下:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><div id="Imglist">
<img alt="" src="http://images.cnblogs.com/null.gif" src2="真正的地址" />
</div>
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><div id="Imglist">
<img alt="" src="http://images.cnblogs.com/null.gif" src2="真正的地址" />
</div>
调用代码:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><script type="text/javascript">
lazyload({
defObj:"#Imglist"
});
</script>
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><script type="text/javascript">
lazyload({
defObj:"#Imglist"
});
</script>
js代码:
代码
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->function lazyload(option){
var settings={
defObj:null,
defHeight:0
};
settings=$.extend(settings,option||{});
var defHeight=settings.defHeight,defObj=(typeof settings.defObj=="object")?settings.defObj.find("img"):$(settings.defObj).find("img");
var pageTop=function(){
return document.documentElement.clientHeight+Math.max(document.documentElement.scrollTop,document.body.scrollTop)-settings.defHeight;
};
var imgLoad=function(){
defObj.each(function(){
if ($(this).offset().top<=pageTop()){
var src2=$(this).attr("src2");
if (src2){
$(this).attr("src",src2).removeAttr("src2");
}
}
});
};
imgLoad();
$(window).bind("scroll",function(){
imgLoad();
});
}
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->function lazyload(option){
var settings={
defObj:null,
defHeight:0
};
settings=$.extend(settings,option||{});
var defHeight=settings.defHeight,defObj=(typeof settings.defObj=="object")?settings.defObj.find("img"):$(settings.defObj).find("img");
var pageTop=function(){
return document.documentElement.clientHeight+Math.max(document.documentElement.scrollTop,document.body.scrollTop)-settings.defHeight;
};
var imgLoad=function(){
defObj.each(function(){
if ($(this).offset().top<=pageTop()){
var src2=$(this).attr("src2");
if (src2){
$(this).attr("src",src2).removeAttr("src2");
}
}
});
};
imgLoad();
$(window).bind("scroll",function(){
imgLoad();
});
}
Tag标签: 图片延迟加载,图片加载
书籍使人变得思想奔放——革拉特珂夫
来源:http://www.cnblogs.com/pxeric/archive/2010/09/04/1818134.html
- 因网页中图片太多可能会拖慢加载速度的解决方法
- 避免网页加载速度慢的秘诀
- Apache加载速度慢,解决方法
- IOS webView 因URL中含有中文加载网页白屏显示的解决方法
- 网页打开速度慢的原因及N种解决方法
- 网页打开速度慢的原因及N种解决方法
- 浅谈打开网页速度慢的原因和解决方法
- qml canvas3D 加载界面速度非常慢的解决方法
- chrome CEF3 加载网页速度慢 delphi
- SSH速度慢的解决方法
- 网卡绑定的协议太多,上网速度慢
- QWebView中加载本地html网页中图片加载失败的解决方法
- 浅析用Base64编码的图片优化网页加载速度
- 图片太多导致在网速慢的情况下效果太差需要用js预加载图片
- 迭代用在有序数组二分法查找中,递归的二分法查找更简洁,但速度可能会慢一点
- android:webview加载网页速度很慢的的究极解决方案
- android:webview加载网页速度很慢的的究极解决方案
- 网页打开慢的解决方法
- 2011年1月至2012年12月预言诗 ----二
- 如何修改oracle字段类型
- 迅雷的user-agent
- play framework 的内置模板标签
- Designing Data Storage Architecture - Pricing Overview
- 因网页中图片太多可能会拖慢加载速度的解决方法
- EFI引导-硬盘安装win7 64位
- 千万不要太爱一个人
- SL OOB模式下COOKIE处理
- 位图数据结构
- 摘记[理论]原创翻译:基于MVVM设计模式的WPF应用程序
- Designing the Application Architecture-Windows Azure Instance & Storage Limits
- win7下搭建ftp服务器
- 网站建设的6个细节