一、 必要性
我們知道,無論對(duì)于Apache還是IIS,圖片始終是最消耗系統(tǒng)資源的,如果將圖片服務(wù)和應(yīng)用服務(wù)放在同一個(gè)服務(wù)器的話,應(yīng)用服務(wù)器很容易會(huì)因?yàn)閳D片的高I/O負(fù)載而崩潰,因此對(duì)于有些大型網(wǎng)站項(xiàng)目,我們有必要將圖片服務(wù)器和應(yīng)用服務(wù)器分離。部署獨(dú)立的圖片服務(wù)器(甚至是服務(wù)器集群)是大型網(wǎng)站圖片存儲(chǔ)解決方案中最基礎(chǔ)的,因?yàn)橛辛霜?dú)立的圖片服務(wù)器后,我們才能對(duì)圖片服務(wù)器做更有針對(duì)性的性能優(yōu)化,比如從硬件角度說,圖片服務(wù)器可以配置高端的硬盤,7200轉(zhuǎn)的換成15000轉(zhuǎn)的,而CPU卻只要一般就可以了;從軟件角度說,可以為圖片服務(wù)器配置特殊的文件系統(tǒng)來滿足對(duì)圖片的I/O請(qǐng)求,如淘寶的TFS,就很好地解決了大規(guī)模小圖片文件帶來的I/O噩夢(mèng),同時(shí),我們也可以采用nginx、squid來代理圖片請(qǐng)求等等。
二、 如何進(jìn)行圖片上傳和同步
1. NFS掛載方式

2. FTP上傳方式
和上面nfs不一樣的是,用戶上傳完圖片后是利用ftp同步到各個(gè)圖片服務(wù)器的,php、java、asp.net基本上都能操作ftp。這樣的話每個(gè)圖片服務(wù)器就都保存一份圖片的副本,也起到了備份的作用。但是缺點(diǎn)是將圖片ftp到服務(wù)器比較耗時(shí),如果異步去同步的話又會(huì)有延時(shí),不過一般的小圖片文件也還好了。
三、 設(shè)計(jì)圖

[if !supportLists]一、[endif]如何滿足一張圖片多種尺寸顯示的要求?
傳統(tǒng)的做法是:1. 將一張圖在上傳時(shí)就進(jìn)行切割或壓縮成不同需求的多張圖片存放到服務(wù)器。這種做法的弊端就是:消耗服務(wù)器資源嚴(yán)重以及不能根據(jù)業(yè)務(wù)擴(kuò)展去擴(kuò)展。
2. 在客戶端進(jìn)行圖片拉繩。這種做法的弊端:數(shù)據(jù)傳輸流量浪費(fèi),而且拉繩之后圖片變形。
現(xiàn)在的解決辦法:圖片根據(jù)請(qǐng)求的尺寸參數(shù),在服務(wù)器端就進(jìn)行切割或壓縮,以適應(yīng)請(qǐng)求的尺寸比例。
比如:
原圖:http://223.202.3.245:81/upload/store/goods/2/2014/09/29/2_455f7dcc676a848d60bda171a470b412.jpg
40x40的圖:
phpForApache