У меня. NET Core 3.1 API, работающий внутри Linux docker контейнера на B2S Azure VM.
Мой API настроен на добавление ResponseCompression
services.Configure<GzipCompressionProviderOptions>(options =>
{
options.Level = CompressionLevel.Optimal;
});
services.AddResponseCompression(options =>
{
options.EnableForHttps = true;
options.Providers.Add<GzipCompressionProvider>();
});
У меня есть простая служба, которая получает несколько байтов из кеша памяти и возвращает их в виде файла моему клиенту.
[HttpGet("product/image/{id}"), Route("product/image")]
public virtual IActionResult ProductImage([FromQuery] string id)
{
try
{
Service.GetProductImage(id, out byte[] content, out string contentType);
return File(content, contentType);
}
catch (Exception ex)
{
return CatchException(ex);
}
}
Если я создаю Diagnostics.StopWatch для измерения задержки моего "GetProductImage" ", для запуска потребовалось 0 мсек.
Проблема в том, что когда я открываю браузер и пытаюсь выполнить GET для любого изображения, для его получения требуется около 1 секунды. Если я открываю 12 изображений одновременно, на каждое изображение уходит около 2 секунд. Каждый журнал моих затянутых мс из GetProductImage показывает 0 мсек времени. Каждое изображение имеет размер около 500 КБ.
Есть идеи, как мне увеличить эту производительность?
Спасибо!