我有一个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-30mb0mb。
我在MultipartConfig上找到的每一篇文章都描述了fileSizeThreshold的功能,但没有描述如何/何时使用它……有人对上一段中的文件要求有什么建议吗?如果有区别的话,我们在ubuntu盒子上运行glassfish4。
提前感谢!
fileSizeThreshold
的想法有点误导,因为它是一种简单的机制,但它的实际用例似乎非常罕见,这会让您怀疑是否正确理解了属性。
您所说的这是一个文件将被持久化到磁盘的点,这是正确的。请注意,默认情况下,这是0,因此默认情况下文件将被写入磁盘,这可能是您99%的时间都想要的。
当您的文件使用寿命较短并且以较高的速率进入时,fileSizeThreshold
就派上了用场,因此将文件持久化到磁盘会带来显著的性能开销。您可以将此参数设置为0以上,以节省一些磁盘i/o。
与总是将文件保存在内存中的布尔值相比,阈值之所以重要,是为了给自己一个安全网,让自己不在内存中保存太大的文件(原因显而易见)。