虽然看起来可能不是这样,但关于这个主题有一些问题。 我不是问我是否应该使用数据库或文件系统(它是文件系统),而是问在与 ASP.NET 应用程序一起使用的文件系统中组织图片的最佳方式是什么? 我说的是几万甚至几十万张图片。
稍微阐述一下问题。
- 存储库应位于何处,在 IIS 或应用程序 VD 中创建另一个 VD,还是 IIS 之外的某个位置?
- 如何组织文件路径,将它们全部放在一个文件夹中或创建子文件夹。如果是这样,如何命名所有这些文件夹?
- 如何处理同一张图片的多种尺寸?在哪里可以找到它们?
- 如何将文件夹和图像与数据库同步?
- 您还想到了什么,并且您认为这很重要..
我自己已经做了一些事情,但我想问是否有人有这方面的经验。也许按照你的方式可以做得更好。
我这样写
我将图片存储在 IIS 文件夹中,因为将它们存储在 iis 之外,由于路径的原因,它们无法在 Web 中使用。 Web 中不能使用文件路径,它必须是虚拟文件路径。
http://images/1.jpg 而不是 C:\images\1.jpg
在根目录中,我有每个图片尺寸的子文件夹
根- +400x300 +600x400 +1024x768
根据数据库中的 ID 命名图像。如果数据库中的ImageID是45678909,则图片的名称是45678909.jpg,它的位置是
VD\图像\400x300\45\67\89\45678909.jpg
VD\images\600x400\45\67\89\45678909.jpg
我将图片名称切成两两,并创建子文件夹。重点是文件夹中的文件不要超过 100 个。这是好主意还是愚蠢的主意?你会如何组织这个?对于个人来说,这个拥有大量文件夹的组织并不容易使用。
- 我保存在数据库表中的图像名称及其相对路径,以及描述和插入时间等。路径:45\67\89\45678909.jpg
有什么建议或改进吗?
谢谢:)
最佳答案
您的最后一个解决方案对我来说似乎是一个非常好的解决方案。如果一个文件夹中的文件太多(例如超过 1000 个),文件访问速度可能会变慢,因此坚持 100 个比较好。
在同步方面,您只需要一个定期运行的脚本来查询数据库中应该存在的所有图像,并删除多余的图像。如果您的磁盘空间并不紧张,那么您不需要这个。
有时您可能希望将图像放在另一台服务器上以获得更好的可扩展性。我唯一可以做的就是为您的图像设置一个子域,例如images.yourdomain.com。即使您将其指向同一服务器,如果需要,也可以很容易地将图像转移到更快的文件服务器。
关于asp.net - 如何组织和操作文件系统中的图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3573568/