我们正在开发一个基于ASP.NET和ASP.NET Core3.1的系统。最近,在基于Load测试进行改进时,我们发现了一个API,它同时处理文件上传和一些JSON有效负载(它是一个多部分请求)。
虽然这个端点是瓶颈并不奇怪,但我认为还有一些改进的余地。
热路径
关键路径似乎是文件上传管理。多达25个文件可以上传(我们的负载测试发送一个2MB文件,因为这是平均)。
端点接受IFormFile,并将其流内容分配给DTO的byte[]属性,然后根据.NET (非核心)将其发送到另一个服务,因为它需要thje SharePoint SDK,它不支持.NET Core :(。
所述服务将byte[]读入流中,该流被发送到SharePoint,在那里文档最终被存储。
我的问题
我猜想(没有任何线索) Request→IFormFile.Stream→byte[]→Stream→SharePoint链可以在不进行byte[]转换的情况下实现。
这是否可能,若然,会否改善整体运作的表现?换句话说:是否可以通过另一个请求将IFormFile的内容流到中间WebService?(这有意义吗)
发布于 2021-02-18 11:17:16
为了回答我自己的问题:问题是在SharePoint中创建文件夹(对每一条附加文件的新记录执行一次)。
它的速度很慢。(载重时)
我们通过实现一个BackgroundJob来解决这个问题,它预先在夜间在SharePoint中预先创建了一定数量的文件夹,这样在处理请求时这个步骤就不会被忽略。
https://stackoverflow.com/questions/65772523
复制相似问题