Yahoo!网站性能最佳体验的34条黄金守则——服务器
上一篇 / 下一篇 2008-07-15 17:38:44 / 个人分类:LAMP
英文地址:http://developer.yahoo.com/performance/rules.html
VCV qYs0中文地址:http://www.dudo.org/article.asp?id=215木铎校园 BBS 社区*y
tQ;y}Y
在本系列的第一节中,讲了提高网站性能中网站“内容”有关的10条原则。除了在网站在内容上的改进外,在网站服务器端上也有需要注意和改进的地方,它们包括:木铎校园 BBS 社区c6Q[(j1w\
pd7qU P(k0
z'i)B`6gI
{011、使用内容分发网络木铎校园 BBS 社区zD#\:g3KvW5}6q
用户与你网站服务器的接近程度会影响响应时间的长短。把你的网站内容分散到多个、处于不同地域位置的服务器上可以加快下载速度。但是首先我们应该做些什么呢?
kt F
j
f&R2IYL0
按地域布置网站内容的第一步并不是要尝试重新架构你的网站让他们在分发服务器上正常运行。根据应用的需求来改变网站结构,这可能会包括一些比较复杂的任
务,如在服务器间同步Session状态和合并数据库更新等。要想缩短用户和内容服务器的距离,这些架构步骤可能是不可避免的。
9VO0BQ?~9kn;J
^0
要记住,在终端用户的响应时间中有80%到90%的响应时间用于下载图像、样式表、脚本、Flash等页面内容。这就是网站性能黄金守则。和重新设计你的
应用程序架构这样比较困难的任务相比,首先来分布静态内容会更好一点。这不仅会缩短响应时间,而且对于内容分发网络来说它更容易实现。木铎校园 BBS 社区5P%?c{hsF"N`
内容分发网络(Content Delivery
Network,CDN)是由一系列分散到各个不同地理位置上的Web服务器组成的,它提高了网站内容的传输速度。用于向用户传输内容的服务器主要是根据
和用户在网络上的靠近程度来指定的。例如,拥有最少网络跳数(network hops)和响应速度最快的服务器会被选定。木铎校园 BBS 社区b5g9w)P|1Z
一些大型的网络公司拥有自己的CDN,但是使用像Akamai Technologies,Mirror Image Internet, 或者Limelight Networks这
样的CDN服务成本却非常高。对于刚刚起步的企业和个人网站来说,可能没有使用CDN的成本预算,但是随着目标用户群的不断扩大和更加全球化,CDN就是
实现快速响应所必需的了。以Yahoo来说,他们转移到CDN上的网站程序静态内容节省了终端用户20%以上的响应时间。使用CDN是一个只需要相对简单
地修改代码实现显著改善网站访问速度的方法。
U N3oUd+m;B8P0
J9t$jV
tt']Rt012、为文件头指定Expires或Cache-Control
)`fQe+\}EBEF(Z0 这条守则包括两方面的内容:木铎校园 BBS 社区v+u`0P3y-{+_:T6m
对于静态内容:设置文件头过期时间Expires的值为“Never expire”(永不过期)
4@(}e X#d-UZ7y"?0对于动态内容:使用恰当的Cache-Control文件头来帮助浏览器进行有条件的请求
4R~;Qr J-p!k-nk&Q;K0
网页内容设计现在越来越丰富,这就意味着页面中要包含更多的脚本、样式表、图片和Flash。第一次访问你页面的用户就意味着进行多次的HTTP请求,但
是通过使用Expires文件头就可以使这样内容具有缓存性。它避免了接下来的页面访问中不必要的HTTP请求。Expires文件头经常用于图像文件,
但是应该在所有的内容都使用他,包括脚本、样式表和Flash等。木铎校园 BBS 社区}sPe*~5Y+Q:w/^rJ
浏览器(和代理)使用缓存来减少HTTP请求的大小和次数以加快页面访问速度。Web服务器在HTTP响应中使用Expires文件头来告诉客户端内容需
要缓存多长时间。下面这个例子是一个较长时间的Expires文件头,它告诉浏览器这个响应直到2010年4月15日才过期。木铎校园 BBS 社区rfN"H'AT(x|
Expires: Thu, 15 Apr 2010 20:00:00 GMT木铎校园 BBS 社区 P-T1}GQ
如果你使用的是Apache服务器,可以使用ExpiresDefault来设定相对当前日期的过期时间。下面这个例子是使用ExpiresDefault来设定请求时间后10年过期的文件头:
)_M5WhR-LW\0 ExpiresDefault "access plus 10 years"木铎校园 BBS 社区L$_7T]{9T)c
要切记,如果使用了Expires文件头,当页面内容改变时就必须改变内容的文件名。依Yahoo!来说我们经常使用这样的步骤:在内容的文件名中加上版本号,如yahoo_2.0.6.js。
DO2D4z m3^b To-V5Rs0
使用Expires文件头只有会在用户已经访问过你的网站后才会起作用。当用户首次访问你的网站时这对减少HTTP请求次数来说是无效的,因为浏览器的缓
存是空的。因此这种方法对于你网站性能的改进情况要依据他们“预缓存”存在时对你页面的点击频率(“预缓存”中已经包含了页面中的所有内容)。Yahoo!建立了一套测量方法,我们发现所有的页面浏览量中有75~85%都有“预缓存”。通过使用Expires文件头,增加了缓存在浏览器中内容的数量,并且可以在用户接下来的请求中再次使用这些内容,这甚至都不需要通过用户发送一个字节的请求。
;h\D#L{F9i0
