知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
為什麼要將圖片伺服器分離出來?
圖片通常比較大,下載需要更長的時間,而web容器並發數也是相當寶貴的僅次於資料庫。
傳統瀏覽器一個窗口只占用一個連結數,目前主流瀏覽器都支持多綫程下載,下載HTML頁面同時,採用多綫程下載其它多媒體數據。
我們舉一個例子,你的伺服器並發能力只用1000,早期瀏覽器不支持多綫程,所以同一時刻,你的伺服器可以承受1000個人同時訪問。 但現在不同了,基本所有的瀏覽器都支持多綫程,假如你的頁面中有9張小圖片,同一時刻你的伺服器僅僅能應付1000/10 = 100個用戶。
所以我們要將圖片和其他多媒體檔案分離出來,單獨使用一台伺服器處理請求。
提示 | |
---|---|
圖片伺服器建議使用lighttpd與squid緩存配合使用效果更好或購買CDN的服務。 |
日期有利於歸檔
/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分鐘