我的生产服务器每块有数百个用户,我已经意识到导出数据可能会耗尽内存并破坏多个用户的应用程序。
我们正在谈论单个用户正在导出数百万个数据。
有没有一种方法可以创建一个CSV文件并将其流式传输到前端,以便生成尽可能少的内存?
不能进行前端请求批处理并在前端中生成CSV文件,此调用将用于其他平台,并且我正在尝试使其对所有人都尽可能干净。
如果您查看Spring Web MVC上的Spring Framework文档,第1.4.3节。处理程序方法的“返回值”小节中,您将找到许多返回流数据的方法,例如
void
-如果具有void
返回类型(或null
返回值)的方法还具有ServletResponse
,或OutputStream
参数或@ResponseStatus
注释,则认为该方法已完全处理了响应。
ResponseBodyEmitter
-发出一个对象流,以异步方式将其写入HttpMessageConverter
;也支持作为一个身体ResponseEntity
。请参阅异步请求和HTTP流。
这意味着您可以做到:
同步:自己将原始响应写入处理程序方法中的HTTP响应流。方法返回时,响应完成。
异步:在处理程序方法中准备流式传输(包括HTTP标头),然后在另一个线程中进行实际的流式传输。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句