我有一个带有以下注释的Servlet,非常基本。
@MultipartConfig ( fileSizeThreshold = 1024 * 1024 * 1, // 1 MB maxFileSize = 1024 * 1024 * 30, // 30 MB maxRequestSize = 1024 * 1024 * 35, // 35 MB location = "/somewhere" )
我发布帖子的原因是设置fileSizeThreshold。据我了解,fileSizeThreshold设置了在将文件写入磁盘之前将文件保存在内存中的阈值。我知道默认值为0,并且在上面的代码段中,一旦传入文件达到1mb,它将开始被写入磁盘。
这个设置有什么意义?在写之前增加内存中的文件量是否有好处?
我有一个应用程序,其中80%的文件上传<5mb,但我们的确获得了25-30mb范围内的较大文件。我们甚至正在考虑将最大大小增加到50mb。
我在MultipartConfig上可以找到的每篇文章都描述了fileSizeThreshold的功能,但是没有说明如何/何时使用它。有人对上一段中的文件要求有任何建议吗?如果有帮助,我们在Ubuntu盒子上运行glassfish4。
提前致谢!
这个想法 fileSizeThreshold
有点误导,因为它是一种简单的机制,但是它的实际用例似乎很少见,以至于使您怀疑您是否正确地理解了该属性。
您说的是正确的,这是将文件持久保存到磁盘的时间。请注意,默认情况下为0,因此默认情况下文件将被写入磁盘,这可能是您希望在99%的时间内。
该fileSizeThreshold
派上用场的时候你的文件有一个短寿命和进来以高速率使得文件持续到磁盘招致显著的性能开销。您可以将此参数设置为大于0的值,以节省一些磁盘I / O。
具有阈值而不是始终将文件保留在内存中的布尔值之所以重要,是为了给自己提供一个安全网,以免保留太大的文件(出于明显的原因)。