Web 前端优化最佳实践之 图象篇

Web 前端优化最佳实践第六部分面向 图片(Image),这部分目前有 4 条规则。在最近的 Velocity 2008 技术大会上,Yahoo! 的 Stoyan Stefanov 做的 Image Optimization: How Many of These 7 Mistakes Are You Making 也非常有参考价值。结合一起说一下。

1. 优化图片 (Optimize Images)

使用 GIFJPG 还是 PNG 格式的图片? 尽可能的使用 PNG 格式的图片,更多的功能,更小的尺寸(与 GIF 相比)。

对于 PNG 图片,考虑用 Pngcrush 或类似的工具进行优化。常见的工具如下表:

  • pngcrush http://pmt.sourceforge.net/pngcrush/
  • pngrewrite http://www.pobox.com/~jason1/pngrewrite/
  • OptiPNG http://www.cs.toronto.edu/~cosmin/pngtech/optipng/ (refer: 教程)
  • PNGOut http://advsys.net/ken/utils.htm

另请参见: Five Tips For the Effective Use of PNG Images

JPEG 图片的优化工具:

必需要强调的是,图片设计的同学啊,请考虑设计面向 Web 的图片,不要动不动就设计超过可接受尺寸之外大家伙,这应该是一种习惯,而不是什么高超的技能,只需要记住就成了。

2. 使用 CSS Sprites 技巧对图片优化 (Optimize CSS Sprites)

之前提到过,简单的说就是”利用 CSS background 相关元素进行背景图绝对定位”,把多次 HTTP 调用变为一次调用,更多参考:CSS Sprites: Image Slicing’s Kiss of Death

补充一下:对于这个技巧我曾经见到有人滥用的。把多个背景图片揉成一个,减少 HTTP 调用,这是一个很好的思路。但一定要记住这个大图片不能太”重”,我看到过 100 多K 的背景图。一个图片就把整个网站拖得很慢。比较好的例子可以参考雅虎关系的这个图.

更新:使用 CSS Sprites 的一个潜在的副作用是客户端将消耗更多内存(参考)。

3. 不要在 HTML 中使用缩放图片 (Don’t Scale Images in HTML)

更多的时候,可能是因为偷懒而没有制作合适大小的图片,如果是批量处理图片的话,可能一条 ImageMagic 命令(convert )就能搞定 。必须提及的是,看到太多的对图片拉伸很难看的页面,救救这些页面!

4. 用更小的并且可缓存的 favicon.ico (Make favicon.ico Small and Cacheable)

更小,可缓存,这两条可能都不是问题。问题是,太多站点根本没有 favicon.ico 。有的时候,判断独立域名的 Blog 是否专业,基本看一下是否有 favicon.ico 就差不多了。

EOF

补充:视觉设计者应该尽量考虑控制图片大小,推荐在 200K 以下。这不是胡说的,参考页面。


12 thoughts on “Web 前端优化最佳实践之 图象篇

  1. xiaoshu

    “尽可能的使用 PNG 格式的图片”
    IE6下要用额外的技术来支持PNG的显示。是不很烦。很麻烦啊。为了少点麻烦还是gif?

    Reply
  2. oooing

    png是指8位的吧,全透明的PNGIE6也是支持的,而且表现效果要比GIF好,比它的文件小。
    也不懂为什么用ICO多就好。

    Reply
  3. roc

    “可IE6下要用额外的技术来支持PNG的显示。是不很烦。很麻烦啊。为了少点麻烦还是gif?”
    准确的说,IE6下不需要额外的技术来支持png,IE6只是不能支持png的alpha透明通道。如果不涉及到透明背景的使用,广泛使用png是没问题的~

    Reply
  4. nickcheng

    针对第3点, 我觉得应该强调一下, 免的有些朋友理解成”使用img元素不要使用width和height元素”(因为我差点儿就这么理解)
    这是因为img元素如果不指定的width和height的话,似乎会导致页面frame的reflow,reflow是会影响性能.
    所以比较理想的做法是
    1. 图片要事先处理成合适的大小.不要依靠img元素的width和height属性来放大和缩小图片
    2. 如果图片的尺寸是固定的, 最好在width和height中写清楚, 这样可以避免页面frame的reflow

    Reply
  5. 东东

    书评写的不错,我也买想本看看。
    我从http://www.china-pub.com/39986 过来的。
    网站优化现在被误读成seo(搜索引擎优化)了。更要命的是现在中国有成千上万的“网站优化专家”!

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *