2011-02-14 56 views
0

我正在構建一個web應用程序,因爲其中一個功能的小子集允許圖像上傳。我使用Mongo而不是MySql來運行燈管堆棧。我應該在哪裏放置所有這些上傳的文件?

我使用一個JavaScript上傳與php後端上傳文件。儘管整個框架在版本控制之下,所以我不想將這些文件轉儲到我的框架中的任何位置,因爲它會讓版本控制變得混亂,而當我最終將媒體遷移到CDN時是次優的。

所以,我的問題是 - 在VPS上,現在應該在哪裏放置這些圖像?在我的框架外部的某個文件夾中?在我的DB作爲BBS?我聽說Mongo在處理二進制數據方面做得不錯...

而且,作爲後續工作,如果我最終計劃將內容轉移到CDN,那麼您會如何建議現在構建我的模式?

我目前的計劃是類似以下內容:

  1. 所有上傳的名稱均帶有一個獨特的 ID和外部 文件夾下降,由各種各樣的全球 訪問的變量定義。

  2. 對存儲在數據庫中的每個圖像名稱的引用是 。

有沒有什麼明顯愚蠢的事情呢,可能會導致我頭痛後來頭痛?

這裏有一個概括的具體問題,只是讓這更是一點點的那麼友好的問題:

給定一個Linux操作系統,Apache,蒙戈,PHP框架上的VPS,什麼是最好的方式來存儲上傳同時保持可擴展性和速度是決定解決方案的兩個最重要因素?

+1

大多數版本控件允許您忽略文件夾中的文件。 – Jacob 2011-02-14 05:00:43

+0

當然,但我一直認爲把非必要的和用戶生成的內容放在框架內是非常糟糕的做法。我想我可能是錯的,但即使我是,它也會遷移到CDN或擴大網站一個巨大的麻煩。 – Jesse 2011-02-14 05:13:08

回答

0

如果您的計劃正在轉向CDN,答案不會更簡單:在您的VPS上創建子域,然後放下您的圖像,您將擁有體面的CDN模擬以及可靠的文件存儲。

0

我同意你不應該將用戶上傳的內容放入你的webapp中,原因很多,但其中一個問題是如何在HTML中顯示img標籤,該標籤需要src屬性相對於webapp。

一個簡單的解決方法可以是:假設在您的unix盒子上創建一個文件夾/ usr/ImagesUPloadByUser並將所有圖像放在那裏。然後在你的web應用程序中創建一個指向正確目錄的鏈接(linux鏈接)。現在這些圖像不在您的webapp中,您也可以輕鬆訪問。

相關問題