《构建高性能Web站点》笔记:5 web组件分离

让你的网站的不同组件使用不同的域名 并且/或者 使用不同的服务器,如

www.glasswall.org          #信息、宣传相关的应用, 服务器名home

bbs.glasswall.org          #论坛应用, 服务器名bbs

image.static-glasswall.org    #图片,服务器名static

js.static-glasswall.org       #javascript,服务器名static

html.static-glasswall.org     #静态html,服务器名static

假设首页 /index既包含动态内容,又包含图片和js,使用上述方案有什么好处?

1.
不同域名,可以提高浏览器下载的并发数。 一个浏览器,对同一个域名只能同时下载5、6个组件;现在域名分开了,浏览器可以同时下载5、6个图片和5、6个js, 并发能力迅速翻倍

2.
不需要cookie的组件采用独立域名,避免不必要的cookie发送。你可以让动态内容发送的cookie只使用glasswall.org域,浏览器在请求*.static-glasswall.org时就不会发送cookie;这样可以减少http header的大小

3.
使用不同的硬软件服务器,以适应不同应用的特征;经过恰当的组合,可以获得最理想的总体请求时间或总体成本控制。 比如bbs服务器需要比较好的cpu/内存,而static服务器则需要比较好的带宽和磁盘,以及配置了非阻塞I/O的apache httpd和反向代理缓存。一台cpu强的机器 + 一台磁盘好的机器, 总价格小于两台 cpu/磁盘都强的机器

不同类型的内容,使用不同的优化方案

1.
图片

  a.一个页面图片多而小,则可以使用长连接,避免频繁打开建立连接

  b.图片内容一般不怎么变,所以Expires可以设得很大,以充分利用浏览器缓存

2.
css/js: 变化频率比较小,所以Expires可以设得很大; 当真的发生变化时,可以给css的url加上新的版本号或时间戳,使浏览器原来缓存的内容失效

3.
大文件下载

  a.服务器要接入高速宽带

  b.磁盘有较好的并行能力

  c.web服务器可以打开linux sendfile选项

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.