一、 必要性
我们知道,无论对于Apache还是IIS,图片始终是最消耗系统资源的,如果将图片服务和应用服务放在同一个服务器的话,应用服务器很容易会因为图片的高I/O负载而崩溃,因此对于有些大型网站项目,我们有必要将图片服务器和应用服务器分离。部署独立的图片服务器(甚至是服务器集群)是大型网站图片存储解决方案中最基础的,因为有了独立的图片服务器后,我们才能对图片服务器做更有针对性的性能优化,比如从硬件角度说,图片服务器可以配置高端的硬盘,7200转的换成15000转的,而CPU却只要一般就可以了;从软件角度说,可以为图片服务器配置特殊的文件系统来满足对图片的I/O请求,如淘宝的TFS,就很好地解决了大规模小图片文件带来的I/O噩梦,同时,我们也可以采用nginx、squid来代理图片请求等等。
二、 如何进行图片上传和同步
1. NFS挂载方式

2. FTP上传方式
和上面nfs不一样的是,用户上传完图片后是利用ftp同步到各个图片服务器的,php、java、asp.net基本上都能操作ftp。这样的话每个图片服务器就都保存一份图片的副本,也起到了备份的作用。但是缺点是将图片ftp到服务器比较耗时,如果异步去同步的话又会有延时,不过一般的小图片文件也还好了。
三、 设计图

[if !supportLists]一、[endif]如何满足一张图片多种尺寸显示的要求?
传统的做法是:1. 将一张图在上传时就进行切割或压缩成不同需求的多张图片存放到服务器。这种做法的弊端就是:消耗服务器资源严重以及不能根据业务扩展去扩展。
2. 在客户端进行图片拉绳。这种做法的弊端:数据传输流量浪费,而且拉绳之后图片变形。
现在的解决办法:图片根据请求的尺寸参数,在服务器端就进行切割或压缩,以适应请求的尺寸比例。
比如:
原图:http://223.202.3.245:81/upload/store/goods/2/2014/09/29/2_455f7dcc676a848d60bda171a470b412.jpg
40x40的图:
phpForApache