Производительность FileResultPath (путь к изображению) в Asp.Net MVC? - PullRequest
3 голосов
/ 09 марта 2011

У меня есть действие Mvc, которое отправляет 'FilePathResult' для 'jpeg' image , как показано ниже.

public ActionResult GetImage()
        {
            string outputImagePath = Server.MapPath(@"Images/OutputImage.jpeg");
            return File(outputImagePath , "image/jpeg");
        }

Теперь это занимает значительно большее время по сравнению со ссылкой на путь к изображению с использованием прямого URL .Требуемое время показано ниже.

http://WebSite/Controller/GetImage занимает 500 мс

http://WebSite/Images/OutputImage.jpeg занимает 10 мс

Является ли этонормальный или я что-то здесь упускаю?

Обновление: Это среднее время, затрачиваемое.Я использую следующую среду.

.Net 4, Asp.Net 2.0, IIS 7.5, Ninject

1 Ответ

2 голосов
/ 09 марта 2011

Это определенно не правильно. Не имея всего кода, было бы очень трудно сказать, в чем проблема.

Прежде всего, я действительно сомневаюсь, что такая большая разница может быть вызвана только кэшированием, но имеет смысл иметь кэширование вывода в вашем действии. Обработчик статического содержимого действительно использует кэширование вывода, так что в этом частично можно винить.

Если это не решит проблему, я предлагаю поместить трассировка в различные аспекты вызова, от создания контроллера (возможно, в конструкторе, если вы не используете фабрику пользовательских контроллеров) до действия до загрузки файл, после загрузки файла и EndRequest. Вы можете использовать Debug.WriteLine, а затем использовать DebugView, чтобы узнать, сколько времени занял каждый раздел, и это должно помочь вам найти узкое место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...