.net 如何使用dotnet core5为wwwroot文件夹中的数百万张图片提供服务?

kcugc4gi  于 2023-03-09  发布在  .NET
关注(0)|答案(1)|浏览(115)

背景

我正在使用dotnet core 5。我在wwwroot文件夹中有数百万个图像。我将wwwroot文件夹添加到 *.csproj的DefaultItemExcludes中

<DefaultItemExcludes>$(DefaultItemExcludes);
    wwwroot\defectImage\**;
    </DefaultItemExcludes>

它在开发中效果很好。

问题

我部署到Linux与挂载多个外部NAS到wwwroot文件夹,如下所示:

wwwroot\defectImage
|_projectA
|_projectB
|__20230301
|___0001.jpg
|___0002.jpg
|___0003.jpg
|___...
|__20230302
|__20230303
|__...
|_projectC
...

但在生产中,程序初始化非常慢(最少约20分钟)
我该怎么办?

我所尝试的

我尝试删除挂载文件夹,它初始化非常快(1分钟)。我确认性能问题是因为wwwroot中有太多图像。我还尝试在Google和stackOverflow上搜索该问题,但一无所获

代码用法:

当前端发送一个关于图片的http请求到我的控制器时,它在wwwRoot中找到了图片并返回。例如:

public IActionResult Get(string projectName, string dateTime, string 
fileName){
  // combine the parameter to generate img path
  string imgPath = "wwwroot/...";
  return File(imgPath, "image/bmp");
  // or return PhysicalFile(imgPath, "image/jpg");
}
nue99wik

nue99wik1#

我最终使用nginx来服务静态内容,比如图像。使用nginx的rewrite指令来最小化代码的修改。

相关问题