我们有一个ASP.NET MVC 4应用程序,我们的用户可以将文件上传到文件夹。
现在我们要限制此文件夹的大小,以避免它不受控制地增长。
要做到这一点可以考虑文件夹的当前大小,所以当要上传文件时,我们可以检查是否达到固定大小限制并取消上传。
问题是我们担心随着源目录中文件数量的增加,这可能会减慢我们的上传过程。
我们可以使用DirectoryInfo构建一个检索文件夹大小的方法,或者我们可以在数据库中存储每个上传文件的大小(我们已经存储了它们的路径,因为它们与我们业务模型中的其他元素相关)和构建一种方法,用于检索添加存储在数据库中的值的文件夹大小。
哪种方法会更好更快?
答案 0 :(得分:2)
我投票支持在DB中存储文件夹的大小。如果您使用DirectoryInfo
,则可能会返回错误信息,以防有人上传文件。无论是否有人上传文件,存储在数据库中都会为您提供当前数字。
答案 1 :(得分:0)
如果您只是获取文件夹大小,我认为从数据库获取目录大小不好..因为上传任何文件后您必须更新您的数据库,并且检查限制必须从数据库获取目录大小...但是使用获取的方法目录信息大小更容易,性能更好
答案 2 :(得分:0)
嗯,枚举文件的速度取决于此文件夹中的文件数量。 你知道这个数字吗?
您可以从命令行运行它,它将创建5000个文件 对于/ L%i in(1,1,5000)do fsutil file createnew A%i.tmp 12000
然后进行性能测试。