網站開發中的檔案儲存體目錄結構的探討_相關技巧
來源:互聯網
上載者:User
對於少量使用者寫資訊,大量使用者都是在看資訊的網站:例如CMS系統,編輯發諮詢,使用者看,例如中小企業產品發布網站。 對於這類需求我們可以把檔案專門放到一個目錄下,例如放到網站根目錄的upload目錄下,然後按天建檔案夾,將每天的檔案放到一個目錄下,檔案名稱可採用數字產生。例如:upload/20100612/1224455.jpg;通常的情況下這種目錄結構就可以保證每個目錄下不會有太多的檔案。
對於部落格,論壇應用,需要對每個使用者指派檔案儲存體空間,如果有需求的話還要限制使用者的儲存空間,對於一般規模的網站目錄結構可以用使用者id+日期的形式;例如upload/234/20100612/abc.jpg。如果規模較大,可以將檔案分布到幾台不同的伺服器上,可以根據使用者id制定一個分布的規則,每台伺服器用不同的網域名稱,並在資料庫中隱藏檔的完整url地址,這種情況下的路徑結構通常是:yun_qi_img/abc.jpg。
我曾經觀察過微軟的檔案下載檔案儲存體的路徑結構,他是用guid產生的一個路徑,例如:http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe ;它這個結構目錄是guid的前三位和guid做了一個4級的目錄,這種情況下,就保證了,每個目錄下不會有很多目錄,因為是guid所以每一個檔案都放到一個單一的目錄下了,這種結構對於做下載的網站應該是一種不錯的選擇。
還有web2.0的網站會涉及到帳戶圖片的儲存,頭像的儲存比較特殊,一個使用者固定有那麼幾個尺寸的圖片,我們分析一下開心網和sina的頭像地址,看他們是如何做的儲存
1. 開心網的儲存,如下是兩對連結地址,每對中的第一個是頭像地址,第二個是使用者首頁,首頁中的參數是使用者id
http://pic1.kaixin001.com.cn/logo/13/39/50_133973_82.jpg
http://www.kaixin001.com/home/?uid=133973
http://www.kaixin001.com/home/?uid=36131662
yun_qi_img/antilink.gif
可以看出開心網的儲存方式是儲存到幾台不同的伺服器上,頭像的地址是根據使用者的id去劃分目錄做的儲存,id的前4位被分成兩個目錄,檔案名稱用的是包含首碼+使用者id+尾碼的方式做的儲存。
2. 如下是兩對sina的空間地址,和部落格頭像的地址
http://space.sina.com.cn/u/1642511512
http://portrait1.sinaimg.cn/1642511512/blog/180
http://space.sina.com.cn/u/1725778305
http://portrait2.sinaimg.cn/1725778305/blog/180
Sina部落格頭像的儲存方式和開心不同,是使用者id做一級目錄,然後加上blog(應該是應用的名字)再加上一個數字180(猜想可能是頭像類型的數字);sina和開心的區別是沒有圖片副檔名,猜想它可能是把頭像放到了一個索引值對的資料庫中,根據url參數從索引值對資料庫中取出頭像的圖片資料,然後輸出給用戶端
從上面的分析可以猜想開心可能是直接存的檔案,而sina可能儲存在索引值對資料庫中,如果資料量很大的話,應該是新浪的方式根據伸縮性。
最後我們還得提一下為我們提供服務的部落格園的儲存方式,如下地址:
http://pic.cnblogs.com/face/u15230.jpg
http://pic.cnblogs.com/face/u105416.png
http://pic.cnblogs.com/face/u40200.png
很簡單直觀應該是放到了一個目錄下,直接使用者id做的檔案名稱,沒有分目錄結構,這樣在檔案夾中檔案過多時是否會引起效能問題呢?