Yahoo!网站性能最佳体验的34条黄金守则——图片、Coockie与移动应用

上一篇 / 下一篇  2008-07-15 17:47:28 / 个人分类:LAMP

C(z4L r I {J0英文地址:http://developer.yahoo.com/performance/rules.html木铎校园 BBS 社区#c9P3N Ms-zX/e
中文地址:http://www.dudo.org/article.asp?id=218
`2|}} l,u6Z'dt0      我们在前面的几节中分别讲了提高网站性能内容服务器JavaScript和CSS等方面的内容。除此之外,图片和Coockie也是我们网站中几乎不可缺少组成部分,此外随着移动设备的流行,对于移动应用的优化也十分重要。这主要包括:
1M&c-T;D8Gt t;Ozlf0Coockie:木铎校园 BBS 社区,XB-V.A{/w-W$c

  1. 减小Cookie体积
  2. 对于页面内容使用无coockie域名

p;g3{6E"Kf&f e:z0图片:

#Wn{3X \0[+Td0
  1. 优化图像
  2. 优化CSS Spirite
  3. 不要在HTML中缩放图像
  4. favicon.ico要小而且可缓存
木铎校园 BBS 社区:HYdv5yKW;PR

移动应用:木铎校园 BBS 社区]h$Kdi)D3^

  1. 保持单个内容小于25K
  2. 打包组件成复合文本
木铎校园 BBS 社区6R6k8rJ2b@$iO FX

木铎校园 BBS 社区.N$qy1NRzP:vG fyd
27、减小Cookie体积

#GR:q6dy9Gy!i/W0      HTTP coockie可以用于权限验证和个性化身份等多种用途。coockie内的有关信息是通过HTTP文件头来在web服务器和浏览器之间进行交流的。因此保持coockie尽可能的小以减少用户的响应时间十分重要。
g~F D']0有关更多信息可以查看Tenni Theurer和Patty Chi的文章“When the Cookie Crumbles”。这们研究中主要包括:

%e it'b9AR0
  • 去除不必要的coockie
  • 使coockie体积尽量小以减少对用户响应的影响
  • 注意在适应级别的域名上设置coockie以便使子域名不受影响
  • 设置合理的过期时间。较早地Expire时间和不要过早去清除coockie,都会改善用户的响应时间。
木铎校园 BBS 社区j|4?*m}zu

28、对于页面内容使用无coockie域名
ch5L"J(J[R0      当浏览器在请求中同时请求一张静态的图片和发送coockie时,服务器对于这些coockie不会做任何地使用。因此他们只是因为某些负面因素而创建的 网络传输。所有你应该确定对于静态内容的请求是无coockie的请求。创建一个子域名并用他来存放所有静态内容。
ez:t7r1@D,~-Q0      如果你的域名是www.example.org,你可以在static.example.org上存在静态内容。但是,如果你不是在 www.example.org上而是在顶级域名example.org设置了coockie,那么所有对于static.example.org的请求 都包含coockie。在这种情况下,你可以再重新购买一个新的域名来存在静态内容,并且要保持这个域名是无coockie的。Yahoo!使用的是 ymig.com,YouTube使用的是ytimg.com,Amazon使用的是images-anazon.com等等。木铎校园 BBS 社区.X.h"s)T)u5f'Ge"H#\"]
      使用无coockie域名存在静态内容的另外一个好处就是一些代理(服务器)可能会拒绝对coockie的内容请求进行缓存。一个相关的建议就是,如果你 想确定应该使用example.org还是www.example.org作为你的一主页,你要考虑到coockie带来的影响。忽略掉www会使你除了 把coockie设置到*.example.org(*是泛域名解析,代表了所有子域名译者dudo注)外没有其它选择,因此出于性能方面的考虑最好是使用带有www的子域名并且在它上面设置coockie。
[[$Qyv4fGjU0
D6@ C a&QK`029、优化图像木铎校园 BBS 社区*n*s:n+|"A8w-K
      设计人员完成对页面的设计之后,不要急于将它们上传到web服务器,这里还需要做几件事:木铎校园 BBS 社区`1[|L5P

  • 你可以检查一下你的GIF图片中图像颜色的数量是否和调色板规格一致。 使用imagemagick中下面的命令行很容易检查:
    i!Z)_7@vN0identify -verbose image.gif木铎校园 BBS 社区k:O^c%|"`Ty~7t$n
    如果你发现图片中只用到了4种颜色,而在调色板的中显示的256色的颜色槽,那么这张图片就还有压缩的空间。
  • 尝 试把GIF格式转换成PNG格式,看看是否节省空间。大多数情况下是可以压缩的。由于浏览器支持有限,设计者们往往不太乐意使用PNG格式的图片,不过这 都是过去的事情了。现在只有一个问题就是在真彩PNG格式中的alpha通道半透明问题,不过同样的,GIF也不是真彩格式也不支持半透明。因此GIF能 做到的,PNG(PNG8)同样也能做到(除了动画)。下面这条简单的命令可以安全地把GIF格式转换为PNG格式:木铎校园 BBS 社区6p)J(o~8ge(H4j?$]\
    convert image.gif image.png木铎校园 BBS 社区0S-x&^w,vs&z
    “我们要说的是:给PNG一个施展身手的机会吧!”
  • 在所有的PNG图片上运行pngcrush(或者其它PNG优化工具)。例如:
    3U |N/VRG0pngcrush image.png -rem alla -reduce -brute result.png
  • 在所有的JPEG图片上运行jpegtran。这个工具可以对图片中的出现的锯齿等做无损操作,同时它还可以用于优化和清除图片中的注释以及其它无用信息(如EXIF信息):
    \_uLP0jpegtran -copy none -optimize -perfect src.jpg dest.jpg

\'J)r!Ej]-_X kH030、优化CSS Spirite

"B0I8F-Sm} ~.~ X0
  • 在Spirite中水平排列你的图片,垂直排列会稍稍增加文件大小;
  • Spirite中把颜色较近的组合在一起可以降低颜色数,理想状况是低于256色以便适用PNG8格式;
  • 便于移动,不要在Spirite的图像中间留有较大空隙。这虽然不大会增加文件大小但对于用户代理来说它需要更少的内存来把图片解压为像素地图。100x100的图片为1万像素,而1000x1000就是100万像素。

Y{j,D,j(x:DX$Z!om0木铎校园 BBS 社区'Rt$vh4Y*ZS7jyR9q
31、不要在HTML中缩放图像
z cGB1~!^0      不要为了在HTML中设置长宽而使用比实际需要大的图片。如果你需要:
9dZ Yd:B%e*zI7lB `0<img width="100" height="100" src="mycat.jpg" alt="My Cat" />木铎校园 BBS 社区*J;r y [8A3z6Y0D5E q
那么你的图片(mycat.jpg)就应该是100x100像素而不是把一个500x500像素的图片缩小使用。
G"@~| D?mC0
1V _m`)vQ1uf032、favicon.ico要小而且可缓存
P(q O'I3x^5py0      favicon.ico是位于服务器根目录下的一个图片文件。它是必定存在的,因为即使你不关心它是否有用,浏览器也会对它发出请求,因此最好不要返回一 个404 Not Found的响应。由于是在同一台服务器上,它每被请求一次coockie就会被发送一次。这个图片文件还会影响下载顺序,例如在IE中当你在 onload中请求额外的文件时,favicon会在这些额外内容被加载前下载。
~_Z5R N-Q9m0      因此,为了减少favicon.ico带来的弊端,要做到:木铎校园 BBS 社区"nAf[ x

  • 文件尽量地小,最好小于1K
  • 在适当的时候(也就是你不要打算再换favicon.ico的时候,因为更换新文件时不能对它进行重命名)为它设置Expires文件头。你可以很安全地把Expires文件头设置为未来的几个月。你可以通过核对当前favicon.ico的上次编辑时间来作出判断。

1C"@w#Q1w2y8z0Imagemagick可以帮你创建小巧的favicon。
u9T1B-a3r_Q0R0木铎校园 BBS 社区)H'r0D'msy]7x)J8sc&O7E
33、保持单个内容小于25K
Wg6Ld$P/EV)J0      这条限制主要是因为iPhone不能缓存大于25K的文件。注意这里指的是解压缩后的大小。由于单纯gizp压缩可能达不要求,因此精简文件就显得十分重要。木铎校园 BBS 社区;v)vSL(j
      查看更多信息,请参阅Wayne Shea和Tenni Theurer的文件Performance Research, Part 5: iPhone Cacheability - Making it Stick”。
HNF1a*Q P0木铎校园 BBS 社区g%L4\3uQop#w
34、打包组件成复合文本木铎校园 BBS 社区!s7S.RQj4f+iV2_
      把页面内容打包成复合文本就如同带有多附件的Email,它能够使你在一个HTTP请求中取得多个组件(切记:HTTP请求是很奢侈的)。当你使用这条规则时,首先要确定用户代理是否支持(iPhone就不支持)。木铎校园 BBS 社区Nez,},} @


TAG: Yahoo 黄金 守则 性能 Coockie

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

关于作者