[英]Which is a better way of serving files (for downloads) via Tomcat?
如果我可以使用字节数组获取文件,哪种方法可以使用户下载该文件更好?
答:使用Apache IOUtils将字节数组直接写入响应流。 在这种情况下,如果客户端停止下载和/或断开连接会发生什么? 我想将JVM的内存利用率保持在最低水平。
B:将字节数组写入某个临时位置的文件中。 然后获取一个FileInputSteam并将其写入响应。 在这种情况下,我需要编写代码来管理磁盘上保存的文件并确保定期清理。 清理算法将需要确保它不会尝试删除当前正在提供给客户端的文件。
这是一个典型的案例,我认为没有一种适合所有人的方法:
正如您所说的,无论如何,文件都以字节数组形式存在,我不希望它能够精确地服务于该字节数组。 但是,您需要了解字节数组的编码(假设它是文本内容,则需要发送带有响应的编码头)
如果不衡量您的情况,几乎没有合理的建议来建议您做什么。
编辑,回复您的评论 :只要处理了一个请求-例如,当文件已完全传输或引发“管道中断”异常时,我都会假定您的内存将被释放,除非您明确地将其保存在Web应用程序的会话或存活时间更长的任何其他数据结构。 但是您可能不会明确地这样做,对吗?
您下载的大小和性质似乎对I / O或内存的需求并不高。 我的建议:不用担心。 但是,您应该做的是:测量。 检查内存消耗是否确实是一个问题。 我怀疑是这样。 如果没有损坏:请勿修复。
无论如何,您都有字节数组-您不妨使用它将其流式传输到客户端,然后再忽略它。 看起来这不会花费太长时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.