2011-02-14 55 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中,您也可以轻松访问。

相关问题