我知道这个问题之前已经被问过很多次,但我还没有找到解决我具体情况的答案。
使用 PHP 和 MySQL...
我即将将用户个人资料图片添加到应用程序中,正如我所见,我有几个选择。其中两个如下:
1.不参考数据库中的图像并像这样存储图像:-
/assets/avatars/32px/userid.jpg
/assets/avatars/90px/userid.jpg
- /assets/avatars/256px/userid.jpg
这意味着没有额外的数据库查找,因为我已经有了相关的用户 ID。
1.将相对路径存储在 users_meta 表中,并在检索用户数据时使用连接检索 url。
每种方法的优缺点是什么?如果在您看来,这两种方法都不是最好的方法,那么您认为存储/引用和检索用户个人资料图片的最有效和可扩展的方法是什么。
非常感谢
编辑:添加更多细节:
我对选项 1 的担忧是,我不确定文件系统将如何处理单个目录中的 100 万多个文件。它会慢到爬行吗?如果是这样,我该如何解决这个问题?有没有可以消除这个潜在问题的结构?也许使用用户加入的时间作为 url 的一部分并按月存储图像。
例如/assets/avatars/10_2012/small/userid.jpg
10_2012 表示所有在 2012 年 10 月注册的用户。
或者在每个目录中只存储 1000 张图像并访问类似的内容:
- /assets/avatars/0/small/userid.jpg
- /assets/avatars/1000/small/userid.jpg
- /assets/avatars/2000/small/userid.jpg
每次应用达到 1000 * n 个注册用户时添加一个新目录。
这会带来优势吗?