关于 MultipartConfig fileSizeThreshold 的建议

Advice on MultipartConfig fileSizeThreshold

我有一个带有以下注释的 Servlet,非常基础。

@MultipartConfig
 (
      fileSizeThreshold = 1024 * 1024 * 1, // 1 MB
      maxFileSize = 1024 * 1024 * 30, // 30 MB
      maxRequestSize = 1024 * 1024 * 35, // 35 MB
      location = "/somewhere"
  )

我的 post 的原因是设置 fileSizeThreshold。据我了解,fileSizeThreshold 设置了在将文件写入磁盘之前将文件保存在内存中的阈值。我知道默认值为 0,在上面的代码片段中,一旦传入文件达到 1mb,它将开始写入磁盘。

这个设置有什么意义?在写入之前增加内存中的文件量是否有优势?

我有一个应用程序,其中 80% 的文件上传小于 5mb,但我们确实在 25-30mb 中获得了更大的文件范围。我们甚至考虑将最大值增加到 50mb

我在 MultipartConfig 上找到的每篇文章都描述了 fileSizeThreshold 的功能,但 how/when 没有使用它...鉴于上一段中的文件要求,有人有任何建议吗?如果它有所作为,我们 运行 glassfish4 在 ubuntu 盒子上。

提前致谢!

fileSizeThreshold 的想法有点误导,因为它是一个简单的机制,但它的实际用例似乎很少见,以至于你怀疑你是否理解 属性正确。

您说这是将文件持久保存到磁盘的时间点是正确的。请注意,默认情况下,这是 0,因此 默认情况下 文件将被写入磁盘,这可能是 99% 的时间你想要的。

当您的文件寿命较短且访问速度很快,以至于将文件持久保存到磁盘会导致显着的性能开销时,fileSizeThreshold 会派上用场。您可以将此参数设置为大于 0 的值以节省您自己 一些 磁盘 i/o。

设置阈值与设置始终将文件保存在内存中的布尔值相比意义重大的原因是为了给自己一个安全网,避免在内存中保存太大的文件(原因很明显)。