我有一个Web应用程序,它有一个OWIN SelfHost WebAPI后端和一个AngularJS前端。
在一个特定视图中,我希望能够从服务器API收集大量数据,然后(按需,而不是立即)将其写入客户端CSV文件。
未格式化的二进制数据大约是每秒80 kB或每分钟4.6 MB;我希望CSV比这要大很多,但我还没有准确的测量结果。 大多数用途预计最多约30分钟(140 MB),但我希望在可行的情况下支持捕获。
目前我有API代码来启动数据捕获并将其存储在服务器内存中,但它很快就用完了。所以我正在寻找替代解决方案。 (我还没有编写客户端部分,所以它更具有可塑性。)
我的第一个想法是让服务器在捕获期间编写一个临时文件/ db来保存数据,然后在请求下载时重新加载并将其以块的形式传输到JS。但是,这不仅会让浏览器内存不足吗?
更复杂的是,目前服务器只有#34; raw"数据,作为JSON发送给JS,在JS将其格式化为CSV之前对其进行一些调整。将此移至服务器端会更好吗,以便客户端只下载预先出现的CSV? (这会有点烦人,因为它需要复制少量代码,但它相当简单。)
服务器不需要处理许多并发请求(特别是不是这种类型的请求,虽然这并非不可能)但是在两者之间做出选择我更喜欢让客户端做得最多工作。
我定位最近的浏览器(主要是Chrome),所以使用新的API是可以的(研究表明Blob是最合适的,虽然我不确定是否允许客户端重新格式化),尽管兼容性总是很好。