`
zyaping2008
  • 浏览: 9934 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

高性能网站web开发之图片管理

阅读更多

一、缩小图片大小

当图片很多的时候,减少图片大小是提高下载速度最直接的 方法。
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.itYUI 团 队做1 个在线压缩图片的网站,该网站在不影响原图片的质量下去掉图片中一些元数据,所以可以放心使 用该网站进行压缩,但这个压缩比例也是比较有限的。

 

4. 也可使用Java 生成高品质缩略图 如:源代码

 

二、合并图片和拆分图片

1. CSS Sprites 合并图片以减少请求数来提高性能大家都知道。但不要把图片合并太多,太多太大了,就会因为这1 个图片影响这个页面的显示了。

2.
有时候我们需要把1 个大图片拆分成多个小图片,比如产品首页图片比较少,就1 个很大的banner 图片,因浏览器都可以并发下载 图片,所以如果不拆分,只使用1 个大图片的话,下载速度反而会比较慢

 

三、透明图片处理

IE6 不能显示透明的PNG 图片,是很多开发人员特 别头 疼的事,分别介绍下几种方式的优缺点。

1. 使用AlphaImageLoaderIE6 支 持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 的渲染。
使用_filterIE7 也 可以识别,其实IE7 是可以识别PNG 透明 图片的,如果在IE7 下使用上面代码,IE7 不 会直接使用图片,而是使用 AlphaImageLoader
注:个人建议尽量避免使用 AlphaImageLoader


2. JS
处理
使用DD_belatedPNG(http://www.dillerdesign.com/experiment/DD_belatedPNG/), 可 以很简单的对界面上所有的透明图片进行同一处理。
优点:使用简单(AlphaImageLoader 还 简单)
缺点:当页面上需要处理的图片比较多的时候,速度也比较慢,而且不能动态改变图片。


3. VML
IE6
支持VMLVML 可以使用透明图片,代码如下:
修改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 个变通的方式来处理,
在页面上直接使用1DIV 元 素来加载该图片,这样加载图片就能真正被缓存,鼠标移动也不会发送请求了。

        
六、预加载图片

使用下 面代码可以在页面加载完毕后预加载下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开发者性能优化最佳PDF

    《高性能网站建设进阶指南》是一本专为WEB开发者设计的性能优化手册,旨在帮助开发者们构建更快、更稳定、更高效的网站。这本书深入探讨了JavaWeb和Java在网站开发中的应用,结合实际案例,提供了丰富的优化策略和...

    Nginx高性能Web服务器详解.pdf

    总之,《Nginx高性能Web服务器详解》是深入了解和掌握Nginx的宝贵资料,无论你是运维工程师、开发人员还是系统架构师,都能从中受益,提升你的Web服务管理和优化技能。通过阅读本书,你将能够构建起一套高效、稳定的...

    构建高性能web站点.pdf

    总的来说,《构建高性能Web站点》是一本全面覆盖Web性能优化的指南,无论你是开发人员、运维工程师还是网站管理员,都能从中受益,学习到提升Web站点性能的实用技术和最佳实践。通过本书的学习,你将能够创建出更...

    实战Nginx:取代Apache的高性能Web服务器 PDF

    它的设计理念是高并发、高性能,且资源消耗极低。Nginx的这些特点使得它非常适合用于高负载的环境...随着互联网技术的不断演进和网站需求的不断增加,掌握Nginx的使用和优化已经成为Web开发和运维人员必备的技能之一。

    高性能PHP应用开发

    在PHP应用开发领域,追求高性能是提升用户体验和系统效率的关键。本资料主要涵盖了前端优化策略以及后端的APC缓存技术,同时提及了压力测试工具Apache Benchmark,这些都是实现高性能PHP应用的重要环节。 首先,...

    实战Nginx:取代Apache的高性能Web服务器+张宴.扫描版

    通过《实战Nginx:取代Apache的高性能Web服务器》这本书,读者不仅可以掌握Nginx的基本操作,还能学习到如何利用Nginx构建高效、稳定、安全的Web服务环境,对于从事Web开发和运维的人员来说,是一份宝贵的参考资料。

    高性能web建议

    高性能web站点的建立是前端开发中的一个重要环节,涉及网页加载速度、用户体验优化等多个方面。根据提供的文件内容,可以提取出以下几点关于高性能web站点建设的知识点: 1. 前端性能优化的重要性:文档中提到了高...

    基于Web的嵌入式设备管理

    VxWorks是Wind River公司开发的一款高性能实时操作系统,广泛应用于嵌入式领域,其网络协议栈产品Wind Web Server是实现Web设备管理的关键。Wind Web Server完全支持HTTP 1.1标准,无需文件系统,能够处理Java ...

    WEB开发的图片素材

    在WEB开发中,图片素材是不可或缺的组成部分,它们为网站增添视觉吸引力,帮助传达信息,提升用户体验。在本文中,我们将深入探讨WEB开发中的图片素材,包括其类型、优化策略、格式选择以及如何有效地管理与使用。 ...

    WEB开发后台模板

    在IT行业中,Web开发是构建互联网应用程序的核心领域,而后台模板则是快速开发高效、美观的管理界面的关键工具。"WEB开发后台模板 ASP JSP IFRAME 模板"这个标题揭示了我们关注的重点在于使用特定技术栈创建的Web...

    Django Web开发指南

    它旨在简化Web开发过程,提供了一套强大的工具和库,使得开发者能够快速地创建高性能的应用程序。 #### 三、框架核心特性 - **模型(Model)**:Django中的模型是用来描述数据结构的部分,通常用来表示数据库中的表...

    《移动Web前端高效开发实战》书籍源码

    5. 框架与库:现代移动Web开发中,React、Vue、Angular等前端框架广泛应用,它们能有效管理组件状态,提高开发效率。此外,如axios用于HTTP请求,Lodash或Underscore提供实用函数,都可能是书中的讨论内容。 6. ...

    高性能web站点 修订版

    《高性能Web站点 修订版》是一本专注于提升Web站点性能的专业书籍,旨在帮助读者掌握优化Web服务的关键技术和策略。在互联网行业中,高性能是衡量网站质量的重要标准,它直接影响到用户体验和业务效率。这本书通过...

    高性能网站建设指南2 中文版 高性能网站建设指南(中文版)

     《高性能网站建设指南》一书介绍了如何针对网站中的Ajax、CSS、JavaScript、Flash和图片进行性能优化。每个性能规则都提供了示例,在本书的配套网站上可以找到代码片段。这些规则包括:  •减少HTTP请求 •使用...

    WEB开发流程及规范

    ### WEB开发流程及规范 #### 一、项目角色划分与责任明确 在Web开发中,项目的成功很大程度上依赖于团队成员的角色...通过以上流程和规范的执行,Web开发团队可以有效地协同工作,确保项目的顺利进行和高质量交付。

    Web前端开发修炼之道

    总之,《Web前端开发修炼之道》是一本全面且深入的前端开发指南,旨在帮助开发者提升代码质量,实现高性能、易维护的Web应用。通过学习和实践书中的知识点,开发者可以不断提升自己的专业素养,成为一名真正的前端...

    高性能网站建设进阶指南 WEB开发者性能优化最佳实践

    总结起来,"高性能网站建设进阶指南:WEB开发者性能优化最佳实践"这本书会涵盖一系列提升Web性能的策略和技术,包括但不限于网络协议、资源管理、代码优化、用户体验设计和性能监控。通过学习和应用这些最佳实践,...

    W3CSchool全套Web开发手册.chm

    通过深入学习这本手册,无论是初学者还是经验丰富的开发者,都能提升自己的Web开发技能,理解Web开发的核心概念,并能运用到实际项目中去。这份资源对于想要系统学习Web开发的人来说,无疑是一份宝贵的财富。

Global site tag (gtag.js) - Google Analytics