我有一个带有以下注释的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%的文件上传量,但是我们的确得到了更大的文件,在 25-30mb 范围内。我们甚至正在考虑将最大数量增加到 50mb 。
我可以在 MultipartConfig 上找到的每篇文章都描述了 fileSizeThreshold 做什么,但没有描述如何/何时使用...有人对上段中的文件要求有任何建议吗?如果有所不同,我们在Ubuntu盒子上运行glassfish4。
提前致谢!
最佳答案
fileSizeThreshold
的想法有点误导,因为它是一种直接的机制,但是它的实际用例似乎很少见,以至于使您怀疑您是否正确地理解了该属性。
您的说法是正确的,这是将文件持久化到磁盘的时间。请注意,默认情况下,该值为0,因此默认情况下,文件将被写入磁盘,这大概是您希望的99%的时间。
当文件生命周期短且输入率很高时,fileSizeThreshold
会派上用场,这样将文件持久存储到磁盘上会产生很大的性能开销。您可以将此参数设置为大于0的值,以节省一些磁盘I/O。
具有阈值而不是始终将文件保留在内存中的 boolean 值之所以重要,是为了给自己提供一个安全网,以免保留太大的文件(出于显而易见的原因)。
关于java - 有关MultipartConfig fileSizeThreshold的建议,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34321046/