Возврат FileStreamResult с большим видеофайлом с высокой загрузкой ЦП - PullRequest
0 голосов
/ 05 августа 2020

У меня есть функция ниже, подключенная к API для возврата потока файлов, например видео, http-клиенту. Если передаваемый файл довольно велик, для возврата данных требуется много ресурсов ЦП. EnableRangeProcessing здесь важен, чтобы позволить клиенту немного буферизовать файл вместо того, чтобы возвращать весь поток.

Мне любопытно, есть ли какие-либо идеи по улучшению этой функции, чтобы избежать этих высоких циклов процессора. Я думал о кешировании потоков на время и истечении их срока действия, если к потоку не будет снова обращаться в течение 45-60 секунд. Но, честно говоря, я не знаю, что. Net делает в фоновом режиме с этим потоком, чтобы избавиться от него.

public static Microsoft.AspNetCore.Mvc.FileStreamResult GetContentStream(System.IO.FileInfo filePath)
{
    try
    {
        System.IO.Stream stream = System.IO.File.OpenRead(filePath.FullName);

        var retValue = new Microsoft.AspNetCore.Mvc.FileStreamResult(stream, "application/octet-stream");
        retValue.EnableRangeProcessing = true;
        return retValue;
    }
    catch (Exception ex)
    {
        Logging.LogError(ex);
        return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...