所有大型网站都不会将图片保存到存储在磁盘中的数据库中。它们保存对图片在表格中位置的引用。然后从那里链接。
为什么?性能。
从数据库中提取大量内容是一个巨大的性能瓶颈。而且数据库的水平扩展性不能很好,所以这意味着一个更大的问题。所有大型网站都使用静态内容场来处理静态内容,如图像。这是不会不关心您的身份的服务器。
他们可能会问,他们如何保持照片的私密性?他们没有。
图片的链接本身就是地址和密码。让我们以Facebook为例。如果我在我的帐户上存储私人图片,您应该无法打开它。但是,只要您有正确的地址,就可以。
这张照片是私人的。注意文件名
(Facebook会不时更改网址,因此链接可能会断开)10400121_87110566301_7482172_n.jpg
它是非顺序的。获取图片的唯一方法是知道它的地址。
根据以前的用户照片,您无法猜到下一张。
它有一个巨大的熵,所以即使你开始随机的疯狂猜测,你也会有大量的失败,如果你得到一张照片,你将无法从那里意识到所有者的身份,这本身就是匿名的保护。
编辑(为什么不应将图像存储在“用户名”文件夹中:
编辑后,很明显您确实打算将文件放在磁盘上而不是数据库上。此编辑涵盖了新方案。
即使您的逻辑(为每个用户创建一个文件夹)接缝更有条理,当您开始拥有许多用户和许多图片时,它也会产生问题。假设您的服务器有 1T 磁盘空间。让我们也想象一下,1T与服务器可以处理的负载或多或少是准确的。
现在你有11个用户,假设他们同时开始上传,每个用户将上传超过100GB的文件。当它们达到91GB时,每个服务器都已满,您必须开始在不同的服务器上存储图像。如果遵循该用户/文件夹结构,则必须选择其中一个用户并将其所有数据迁移到其他服务器。此外,它对不能上传超过1T文件的用户进行了硬性限制。
那么,我应该将所有文件存储在同一个文件夹中吗?
不可以,大型站点通常将文件存储在顺序文件夹(/000001/、/000002/等)中,每个文件夹具有 x 定义的文件数。这主要针对文件系统性能问题。
详细了解目录中有多少个文件太多?