一、缩小图片大小
当图片很多的时候,减少图片大小是提高下载速度最直接的 方法。
1.
使用PNG8
代替GIF(
非
动画图片)
,因为PNG8
在效果一样的情
况,图片大小比GIF
要小。
2.
用fireworks
处理PNG
图
片,在我们产品中很多PNG
图片是美工直接用photoshop
导
出的,后来让美工用fireworks
处理PNG(
大
概的方式是选择保存为PNG8,
删除背景色)
。
处理后100K
的图片大小基本减少了3/4
,
但图片质量也会有少许降低,要看自己是否能接受。
3.
使用Smush.it(http://www.smushit.com/ysmush.it/
)
压缩图片,Smush.it
是YUI
团
队做1
个在线压缩图片的网站,该网站在不影响原图片的质量下去掉图片中一些元数据,所以可以放心使
用该网站进行压缩,但这个压缩比例也是比较有限的。
4.
也可使用Java
生成高品质缩略图 如:源代码
二、合并图片和拆分图片
1. CSS Sprites
合并图片以减少请求数来提高性能大家都知道。但不要把图片合并太多,太多太大了,就会因为这1
个图片影响这个页面的显示了。
2.
有时候我们需要把1
个大图片拆分成多个小图片,比如产品首页图片比较少,就1
个很大的banner
图片,因浏览器都可以并发下载
图片,所以如果不拆分,只使用1
个大图片的话,下载速度反而会比较慢
三、透明图片处理
IE6
不能显示透明的PNG
图片,是很多开发人员特
别头 疼的事,分别介绍下几种方式的优缺点。
1.
使用AlphaImageLoader
,IE6
支
持filter,
使用下面的CSS
代码,可
以让IE6
支持PNG
#some-element {
background: url(image.png);
_background: none;
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png', sizingMethod='crop');
}
优点:使用简单
缺点:性能损耗很大,AlphaImageLoader
会花费很多资源去处理透明图
片,使用AlphaImageLoader,IE
使用内存会迅速上升。
而且AlphaImageLoader
所有处理都在同1
个线程中同步进行,所以当AlphaImageLoader
多
的时候,会阻塞UI
的渲染。
使用_filter
,IE7
也
可以识别,其实IE7
是可以识别PNG
透明
图片的,如果在IE7
下使用上面代码,IE7
不
会直接使用图片,而是使用 AlphaImageLoader
。
注:个人建议尽量避免使用
AlphaImageLoader
2. JS
处理
使用DD_belatedPNG(http://www.dillerdesign.com/experiment/DD_belatedPNG/),
可
以很简单的对界面上所有的透明图片进行同一处理。
优点:使用简单(
比AlphaImageLoader
还
简单)
缺点:当页面上需要处理的图片比较多的时候,速度也比较慢,而且不能动态改变图片。
3. VML
IE6
支持VML
,VML
可以使用透明图片,代码如下:
修改html
代码头部
<
html
xmlns
="http://www.w3.org/1999/xhtml"
xmlns:v
>
<
head
>
<
style
type
="text/css"
>
v\:*
{
behavior
:
url(#default#VML)
;
}
</
style>
</
head
>
<
body
>
<
v:image
src
="image.png"
/>
</
body
>
</
html
>
优点:性能好,速度快
缺点:使用复杂,而且不支持firefox
等浏览器,需要判断不同的浏览器输出不同
的HTML
代码。
四、多域名下载图片
因每个浏览器对同1
个域名同时只能发送固定的
请求,比如 IE6
好像是2
个,所以可以对
图片资源开通多个域名进行请求,
比如img1.abc.com,img2.abc.com
。但域名不要开启太多,因
为解析域名和打开新的连接都需要消耗时间,域名多了,说不定反而会更
慢。一般2-4
个域名就够了。
五、IE6
下
缓存背景图片
IE6
背景图片缓存是个麻烦事,很多人知道使用下面的
JS
来让IE6
缓存背景图片
try{
document.execCommand("BackgroundImageCache", false, true);
}catch(e){}
但是这样做的效果并不是非常好,当出现鼠标移动改变背景图片的时候,IE6
老是会发
送1
个图片请求(
尽管该背景图片已经下载)
,虽然返回结果是304
,但还是要花费不少时间。在
这种情况下,可以使用下面1
个变通的方式来处理,
在页面上直接使用1
个DIV
元
素来加载该图片,这样加载图片就能真正被缓存,鼠标移动也不会发送请求了。
六、预加载图片
使用下 面代码可以在页面加载完毕后预加载下1
个
页面的图片,当进入下1
个页面就不用再下载图片了。
window.onload=function(){
var img = new Image();
img.src = "images/image.png";
img = null;
};
七、
延迟
加载图片
经常上
tudou
网,发现
tudou
首页加载图片的功能很有意思,
tudou
首页从
"
娱乐
"
这个板块往下的所有视频的缩略图并不是在页
面打开后就加载的,
而是当用户拖动滚动条到了
"
娱乐
"
这个板块,才开始加载图片的。这样做的好处
当然是如果有用户不需要查看下面的内容,则免去了下面所有图片的请求,这对减
少服务器的压力还是很有帮助的。
tudou
的实现原理:
1、
先把所有需要
延迟加载的图片的
src
都设置成同
1
个小图片的连接
(sprite.gif)
,把真正图片的连接放进图片的
alt
属性中,如下代码:
<a class="inner" target="new" title="史上最重街舞选手和最柔软街舞选手" href="http://www.tudou.com/programs/view/Utmt1_6Z-lU/">
<img width="120" height="90" class="pack_clipImg lazyImg" alt="http://i01.img.tudou.com/data/imgs/i/051/720/095/p.jpg" src="http://css.tudouui.com/skin/__g/img/sprite.gif" coords="_DAA"/>
</a>
2、
绑定
window.scroll
事件,在该事件里面的重设所有
class
为
lazyImg
的图片的
src
值
示例代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
</head>
<body>
默认看到的图片:<img src="http://www.google.com.hk/intl/zh-CN/images/logo_cn.png"/>
<div id="lazyBox" style="margin-top:100px;">
滑动滑动条才能看到的图片:
<img width="120" height="90" style="border:1px solid blue;" class="lazyImg" alt="http://www.baidu.com/img/baidu_logo.gif" src="http://css.tudouui.com/skin/__g/img/sprite.gif" coords="_DAA"/>
<img width="120" height="90" style="border:1px solid blue;" class="lazyImg" alt="http://img1.gootrip.com/gootrip/_20upload/photo/2008-03-07/70525_1.jpg" src="http://css.tudouui.com/skin/__g/img/sprite.gif" coords="_DBA"/>
</div>
<div style="height:1000px;"></div>
<script type="text/javascript">
var hasShow = false;
$(window).bind("scroll",function(){
if(hasShow==true){
$(window).unbind("scroll");
return;
}
var t = $(document).scrollTop();
if(t>50){
// 滚动高度超过50,加载图片
hasShow = true;
$("#lazyBox .lazyImg").each(function(){
$(this).attr("src",$(this).attr("alt"));
});
}
});
</script>
</body>
</html>
把上面代码
copy
到本地运行下就可以看到效果了。
分享到:
相关推荐
《高性能网站建设进阶指南》是一本专为WEB开发者设计的性能优化手册,旨在帮助开发者们构建更快、更稳定、更高效的网站。这本书深入探讨了JavaWeb和Java在网站开发中的应用,结合实际案例,提供了丰富的优化策略和...
总之,《Nginx高性能Web服务器详解》是深入了解和掌握Nginx的宝贵资料,无论你是运维工程师、开发人员还是系统架构师,都能从中受益,提升你的Web服务管理和优化技能。通过阅读本书,你将能够构建起一套高效、稳定的...
总的来说,《构建高性能Web站点》是一本全面覆盖Web性能优化的指南,无论你是开发人员、运维工程师还是网站管理员,都能从中受益,学习到提升Web站点性能的实用技术和最佳实践。通过本书的学习,你将能够创建出更...
它的设计理念是高并发、高性能,且资源消耗极低。Nginx的这些特点使得它非常适合用于高负载的环境...随着互联网技术的不断演进和网站需求的不断增加,掌握Nginx的使用和优化已经成为Web开发和运维人员必备的技能之一。
在PHP应用开发领域,追求高性能是提升用户体验和系统效率的关键。本资料主要涵盖了前端优化策略以及后端的APC缓存技术,同时提及了压力测试工具Apache Benchmark,这些都是实现高性能PHP应用的重要环节。 首先,...
通过《实战Nginx:取代Apache的高性能Web服务器》这本书,读者不仅可以掌握Nginx的基本操作,还能学习到如何利用Nginx构建高效、稳定、安全的Web服务环境,对于从事Web开发和运维的人员来说,是一份宝贵的参考资料。
高性能web站点的建立是前端开发中的一个重要环节,涉及网页加载速度、用户体验优化等多个方面。根据提供的文件内容,可以提取出以下几点关于高性能web站点建设的知识点: 1. 前端性能优化的重要性:文档中提到了高...
VxWorks是Wind River公司开发的一款高性能实时操作系统,广泛应用于嵌入式领域,其网络协议栈产品Wind Web Server是实现Web设备管理的关键。Wind Web Server完全支持HTTP 1.1标准,无需文件系统,能够处理Java ...
在WEB开发中,图片素材是不可或缺的组成部分,它们为网站增添视觉吸引力,帮助传达信息,提升用户体验。在本文中,我们将深入探讨WEB开发中的图片素材,包括其类型、优化策略、格式选择以及如何有效地管理与使用。 ...
在IT行业中,Web开发是构建互联网应用程序的核心领域,而后台模板则是快速开发高效、美观的管理界面的关键工具。"WEB开发后台模板 ASP JSP IFRAME 模板"这个标题揭示了我们关注的重点在于使用特定技术栈创建的Web...
它旨在简化Web开发过程,提供了一套强大的工具和库,使得开发者能够快速地创建高性能的应用程序。 #### 三、框架核心特性 - **模型(Model)**:Django中的模型是用来描述数据结构的部分,通常用来表示数据库中的表...
5. 框架与库:现代移动Web开发中,React、Vue、Angular等前端框架广泛应用,它们能有效管理组件状态,提高开发效率。此外,如axios用于HTTP请求,Lodash或Underscore提供实用函数,都可能是书中的讨论内容。 6. ...
《高性能Web站点 修订版》是一本专注于提升Web站点性能的专业书籍,旨在帮助读者掌握优化Web服务的关键技术和策略。在互联网行业中,高性能是衡量网站质量的重要标准,它直接影响到用户体验和业务效率。这本书通过...
《高性能网站建设指南》一书介绍了如何针对网站中的Ajax、CSS、JavaScript、Flash和图片进行性能优化。每个性能规则都提供了示例,在本书的配套网站上可以找到代码片段。这些规则包括: •减少HTTP请求 •使用...
### WEB开发流程及规范 #### 一、项目角色划分与责任明确 在Web开发中,项目的成功很大程度上依赖于团队成员的角色...通过以上流程和规范的执行,Web开发团队可以有效地协同工作,确保项目的顺利进行和高质量交付。
总之,《Web前端开发修炼之道》是一本全面且深入的前端开发指南,旨在帮助开发者提升代码质量,实现高性能、易维护的Web应用。通过学习和实践书中的知识点,开发者可以不断提升自己的专业素养,成为一名真正的前端...
总结起来,"高性能网站建设进阶指南:WEB开发者性能优化最佳实践"这本书会涵盖一系列提升Web性能的策略和技术,包括但不限于网络协议、资源管理、代码优化、用户体验设计和性能监控。通过学习和应用这些最佳实践,...
通过深入学习这本手册,无论是初学者还是经验丰富的开发者,都能提升自己的Web开发技能,理解Web开发的核心概念,并能运用到实际项目中去。这份资源对于想要系统学习Web开发的人来说,无疑是一份宝贵的财富。