最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

網(wǎng)站開發(fā)中的文件存儲(chǔ)目錄結(jié)構(gòu)的探討

 更新時(shí)間:2010年07月10日 00:37:43   作者:  
網(wǎng)站應(yīng)用中經(jīng)常會(huì)有文件存儲(chǔ)的需求,目錄結(jié)構(gòu)該怎么建才好呢?讓我們來做下分析
對(duì)于少量用戶寫信息,大量用戶都是在看信息的網(wǎng)站:例如CMS系統(tǒng),編輯發(fā)咨詢,用戶看,例如中小企業(yè)產(chǎn)品發(fā)布網(wǎng)站。 對(duì)于這類需求我們可以把文件專門放到一個(gè)目錄下,例如放到網(wǎng)站根目錄的upload目錄下,然后按天建文件夾,將每天的文件放到一個(gè)目錄下,文件名可采用數(shù)字生成。例如:upload/20100612/1224455.jpg;通常的情況下這種目錄結(jié)構(gòu)就可以保證每個(gè)目錄下不會(huì)有太多的文件。

對(duì)于博客,論壇應(yīng)用,需要對(duì)每個(gè)用戶分配文件存儲(chǔ)空間,如果有需求的話還要限制用戶的存儲(chǔ)空間,對(duì)于一般規(guī)模的網(wǎng)站目錄結(jié)構(gòu)可以用用戶id+日期的形式;例如upload/234/20100612/abc.jpg。如果規(guī)模較大,可以將文件分布到幾臺(tái)不同的服務(wù)器上,可以根據(jù)用戶id制定一個(gè)分布的規(guī)則,每臺(tái)服務(wù)器用不同的域名,并在數(shù)據(jù)庫中存儲(chǔ)文件的完整url地址,這種情況下的路徑結(jié)構(gòu)通常是:http://file1.abc.com/upload/234/20100612/abc.jpg。

我曾經(jīng)觀察過微軟的文件下載文件存儲(chǔ)的路徑結(jié)構(gòu),他是用guid生成的一個(gè)路徑,例如:http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe ;它這個(gè)結(jié)構(gòu)目錄是guid的前三位和guid做了一個(gè)4級(jí)的目錄,這種情況下,就保證了,每個(gè)目錄下不會(huì)有很多目錄,因?yàn)槭莋uid所以每一個(gè)文件都放到一個(gè)單一的目錄下了,這種結(jié)構(gòu)對(duì)于做下載的網(wǎng)站應(yīng)該是一種不錯(cuò)的選擇。

還有web2.0的網(wǎng)站會(huì)涉及到用戶頭像的存儲(chǔ),頭像的存儲(chǔ)比較特殊,一個(gè)用戶固定有那么幾個(gè)尺寸的圖片,我們分析一下開心網(wǎng)和sina的頭像地址,看他們是如何做的存儲(chǔ)
1. 開心網(wǎng)的存儲(chǔ),如下是兩對(duì)鏈接地址,每對(duì)中的第一個(gè)是頭像地址,第二個(gè)是用戶首頁,首頁中的參數(shù)是用戶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

http://pic.kaixin001.com.cn/logo/13/16/50_36131662_2.jpg

可以看出開心網(wǎng)的存儲(chǔ)方式是存儲(chǔ)到幾臺(tái)不同的服務(wù)器上,頭像的地址是根據(jù)用戶的id去劃分目錄做的存儲(chǔ),id的前4位被分成兩個(gè)目錄,文件名用的是包含前綴+用戶id+后綴的方式做的存儲(chǔ)。
2. 如下是兩對(duì)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博客頭像的存儲(chǔ)方式和開心不同,是用戶id做一級(jí)目錄,然后加上blog(應(yīng)該是應(yīng)用的名字)再加上一個(gè)數(shù)字180(猜想可能是頭像類型的數(shù)字);sina和開心的區(qū)別是沒有圖片擴(kuò)展名,猜想它可能是把頭像放到了一個(gè)鍵值對(duì)的數(shù)據(jù)庫中,根據(jù)url參數(shù)從鍵值對(duì)數(shù)據(jù)庫中取出頭像的圖片數(shù)據(jù),然后輸出給客戶端

從上面的分析可以猜想開心可能是直接存的文件,而sina可能存儲(chǔ)在鍵值對(duì)數(shù)據(jù)庫中,如果數(shù)據(jù)量很大的話,應(yīng)該是新浪的方式根據(jù)伸縮性。

最后我們還得提一下為我們提供服務(wù)的博客園的存儲(chǔ)方式,如下地址:

http://pic.cnblogs.com/face/u15230.jpg

http://pic.cnblogs.com/face/u105416.png

http://pic.cnblogs.com/face/u40200.png

很簡(jiǎn)單直觀應(yīng)該是放到了一個(gè)目錄下,直接用戶id做的文件名,沒有分目錄結(jié)構(gòu),這樣在文件夾中文件過多時(shí)是否會(huì)引起性能問題呢?

相關(guān)文章

  • 關(guān)于Sourcetree啟動(dòng)問題(完美解決)

    關(guān)于Sourcetree啟動(dòng)問題(完美解決)

    文章講述了SourceTree閃退的問題及其解決方法,源因?yàn)槲搓P(guān)閉SourceTree而關(guān)機(jī)或系統(tǒng)更新導(dǎo)致緩存信息不匹配,解決方法是刪除緩存文件或特定緩存目錄中的[Composition.cache]文件
    2024-11-11
  • Git標(biāo)簽管理

    Git標(biāo)簽管理

    本篇文章主要介紹了Git標(biāo)簽管理的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-04-04
  • 為Jenkins創(chuàng)建定時(shí)構(gòu)建任務(wù)

    為Jenkins創(chuàng)建定時(shí)構(gòu)建任務(wù)

    這篇文章介紹了為Jenkins創(chuàng)建定時(shí)構(gòu)建任務(wù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • 關(guān)于使用mvn deploy命令將本地jar包上傳到maven私服的問題(收藏)

    關(guān)于使用mvn deploy命令將本地jar包上傳到maven私服的問題(收藏)

    這篇文章主要介紹了使用mvn deploy命令將本地jar包上傳到maven私服,分享本篇教程可以幫助多數(shù)朋友少走彎路,本文具有很好的收藏價(jià)值,需要的朋友可以參考下
    2022-03-03
  • hexo博客開啟https的SSL?證書實(shí)現(xiàn)過程

    hexo博客開啟https的SSL?證書實(shí)現(xiàn)過程

    這篇文章主要為大家介紹了hexo?博客開啟https的SSL證書實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 快速掌握和使用Flyway的詳細(xì)教程

    快速掌握和使用Flyway的詳細(xì)教程

    這篇文章主要介紹了快速掌握和使用Flyway的詳細(xì)教程,需要的朋友可以參考下
    2020-07-07
  • 使用?Loki?實(shí)現(xiàn)?Kubernetes?容器日志監(jiān)控的方法

    使用?Loki?實(shí)現(xiàn)?Kubernetes?容器日志監(jiān)控的方法

    Loki?是由?Grafana?Labs?團(tuán)隊(duì)開發(fā)的,基于?Go?語言實(shí)現(xiàn),是一個(gè)水平可擴(kuò)展,高可用性,多租戶的日志聚合系統(tǒng)。它的設(shè)計(jì)非常經(jīng)濟(jì)高效且易于操作,這篇文章主要介紹了使用?Loki?實(shí)現(xiàn)?Kubernetes?容器日志監(jiān)控的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-05-05
  • Git?Commitizen提交規(guī)范化自動(dòng)生成changelog文件

    Git?Commitizen提交規(guī)范化自動(dòng)生成changelog文件

    這篇文章主要為大家介紹了Git?Commitizen提交規(guī)范化自動(dòng)生成changelog文件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • git add -A 和 git add . 的區(qū)別詳解

    git add -A 和 git add . 的區(qū)別詳解

    這篇文章主要介紹了git add -A 和 git add . 的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • IDEA編寫SQL語句沒有提示的解決辦法

    IDEA編寫SQL語句沒有提示的解決辦法

    這篇文章主要給大家介紹了關(guān)于IDEA編寫SQL語句沒有提示的解決辦法,在IDEA中如果你在編寫SQL語句時(shí)沒有得到語法提示,可能是因?yàn)闆]有正確配置數(shù)據(jù)庫連接或者缺少相應(yīng)的插件,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

利津县| 枣庄市| 绵竹市| 德惠市| 平泉县| 黄大仙区| 疏勒县| 吴忠市| 晋中市| 靖边县| 柯坪县| 喜德县| 商河县| 关岭| 谢通门县| 南江县| 安达市| 五家渠市| 绵阳市| 抚顺市| 南雄市| 保亭| 内江市| 沙坪坝区| 稻城县| 多伦县| 台前县| 左贡县| 卢湾区| 光山县| 中山市| 于田县| 嵊州市| 太湖县| 六枝特区| 思茅市| 盱眙县| 三明市| 安仁县| 钦州市| 沾化县|