Ram*_*Ram 4 c# asp.net directory webserver image
我正在开发一个Web应用程序,我需要在服务器上存储图像(这些是用户上传的).我正在为每个新图像生成新的Guid.我正在创建一个图像的三个图像,即原始图标,图标和拇指.我仍然使用三个不同的文件夹来保存这些.我的项目经理问我为什么我没有为每个用户创建不同的文件夹.所以我的问题是哪种更好的方法来存储以下内容之间的图像:
1).仅在三个文件夹中上传图像,即原始图标,图标和拇指,或2).为每个用户创建文件夹,然后在其中创建三个文件夹,用于原始,拇指和图标.有一件事我想问一下,如果用户数量超过100000那么它会影响性能吗?
这是更好的方法.请帮我决定.谢谢
我会按用户存储图像.但是,鉴于您可能拥有大量用户,可能并不那么简单.
用户文件上传只是:用户特定的文件上传.管理这些文件时,通常需要为每个用户应用各种过程.例如:1)删除用户帐户并删除所有相关文件,2)计算用户使用的空间量,3)列出用户上传的所有文件等.
如果将这些文件分散到各个目录中,则有效实现上述过程要困难得多.
您指定可能有超过100.000个用户.根据您的文件系统,您可能会因此而遇到麻烦.例如,在ext3中,每个目录最多有32K个子目录,这对于按用户组织目录中的文件可能会有问题(请参阅:我可以在目录中放入多少个文件?).
假设我们无法在目录中存储超过32K的文件或目录,那么您需要找到一种方法来解决此限制.例如,您可以根据用户名中的第一个字母将用户文件夹拆分为多个子目录(并为所有其他起始字符添加额外的子目录):
users
a
aaron
...
b
bertie
...
...
misc
_foobar
...
@jack
...
Run Code Online (Sandbox Code Playgroud)
现在,100000/25=4000
每个目录只有大约用户,这在给定的32K下.
在盒子外面思考,将图像作为文件存储在平面文件系统中可能不是正确的选择.有专门为存储和处理大量文件而创建的数据库系统.以MongoDB的GridFS为例.它非常高效,可以扩展到大量文件,还可以处理所有较低级别的问题,例如正确的文件系统使用.在MS SQL中有FILESTREAM存储,它特别擅长在NTFS文件系统上存储文件.
归档时间: |
|
查看次数: |
2194 次 |
最近记录: |