Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | ITEYE 博客 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Search | Email

3.4. 多媒体数据分离

3.4.1. 图片服务器分离

为什么要将图片服务器分离出来?

  1. 图片通常比较大,下载需要更长的时间,而web容器并发数也是相当宝贵的仅次于数据库。

  2. 传统浏览器一个窗口只占用一个链接数,目前主流浏览器都支持多线程下载,下载HTML页面同时,采用多线程下载其它多媒体数据。

我们举一个例子,你的服务器并发能力只用1000,早期浏览器不支持多线程,所以同一时刻,你的服务器可以承受1000个人同时访问。 但现在不同了,基本所有的浏览器都支持多线程,假如你的页面中有9张小图片,同一时刻你的服务器仅仅能应付1000/10 = 100个用户。

所以我们要将图片和其他多媒体文件分离出来,单独使用一台服务器处理请求。

[提示]提示

图片服务器建议使用lighttpd与squid缓存配合使用效果更好或购买CDN的服务。

3.4.2. 目录层次规划

日期有利于归档

/www/images
/www/images/2008
/www/images/2008/01
/www/images/2008/01/01
			

分类不同用途的文件

/www/images
/www/images/theme/2009

# article id 000001
/www/images/article/2009/01/000001

# product id 00001
/www/images/product/2009/01/01/00001

# member name neo
/www/images/member/2009/01/01/neo
			

根据你的数据量,创建目录深度, 并且目录深度有规律可循。

虽然64bit 文件系统不限制文件数量与目录深度,但是我还是建议按我的方式规划目录。

这样规划目录便于缓存控制,如:

images/2008/* 永久缓存

images/2009/* 缓存一个月

images/2010/* 缓存一小时

images/2010/06/* 缓存5分钟

3.4.3. 多域名访问

部分浏览器(IE)相同域名只能创建2个线程,在页面中使用多个域名可以解决这个限制

img1.example.com IN CNAME images.example.com.
img2.example.com IN CNAME images.example.com.
img3.example.com IN CNAME images.example.com.
...
imgN.example.com IN CNAME images.example.com.