这里有一些关于文件管理和在大型项目中存储的非常好的问题。
Would you store binary data in database or in file system?
第一个很有洞察力,在我的项目中,我决定选择文件路由,而不是DB路由。
反对使用文件系统的一个要点是备份。但在我们的系统中,我们有一个很好的备份方案,所以我不担心。
下一步是如何存储实际文件。我一直在考虑让文件的位置在任何时候都是静态的,并在数据库端创建一个虚拟目录系统。所以指向文件的链接不会改变。
我正在构建的系统将有一个全局文件管理,这样所有的文件都可以被所有的用户访问。但是,许多已经走上文件路径的人谈到了物理目录大小(例如,如果所有文件都在一个目录中)。
因此,我的问题是,在为这些静态文件创建文件夹方面有哪些技巧或最佳实践方法,或者我根本不应该使用虚拟目录路径。
(该项目位于灯堆栈(PHP)上,如果这有帮助的话)
发布于 2009-03-22 16:49:11
一种方法是为每个文件分配一个唯一的编号,并使用它来查找实际的文件位置。然后,使用该数字在文件系统中的不同目录中分发文件.例如,您可以使用这样的方案:
/images/{0}/{1}/{2}
{0}: file_number % 100
{1}: (file_number / 100) % 100
{2}: file_number
发布于 2009-03-22 17:47:48
一段时间前,我遇到了这个问题,因为一个网站承载了很多文件。我们所做的是获取一个GUID (它也是一个文件的主键字段)(例如BCC46E3F-2F7A-42b1-92CE-DBD6EC6D6301)并存储这样一个文件: /B/C/C/BCC46E3F-2F7A-42b1-92CE-DBD6EC6D6301/filename.ext
这样做有一定的好处:
希望这能有所帮助!
发布于 2009-03-22 16:50:42
为了避免在单个目录中创建过多的条目,您可能需要根据文件名的片段创建目录。例如,如果您有一个名为d7f5ae9b7c5a.png的文件,您可能希望将它存储在media/d7/f5/d7f5ae9b7c5a.png中。如果您的文件名都是十六进制,那么这将将单个目录中的条目数量限制在256到最后的级别。
https://stackoverflow.com/questions/671260
复制相似问题