Подтвердить что ты не робот

ASP.NET MVC рендеринг кажется медленным

Я создал совершенно новое веб-приложение MVC4 в Visual Studio и больше ничего не сделал с ним, чем добавил в него домашний контроллер и индекс "Hello world". Затем я установил пакет MiniProfiler NuGet и поместил нужную пару строк в _Layout.cshtml. Это то, что я получаю, когда запускаю сайт в режиме выпуска (размещен в IIS):

MVC rendering picture

Время рендеринга варьируется в зависимости от pageload, но 130 мс примерно так же быстро, как и получается. Мне это кажется немного медленным, поскольку я видел других людей, которые получают страницы, сделанные за 30 мс или быстрее. Любые идеи, почему рендеринг будет таким медленным с новым пустым проектом MVC4? Мой процессор - Intel Core i5-2400, а на аппарате - 16 ГБ.

Кстати, это не первый раз, когда страница загружается; Я перезагрузил страницу несколько раз, прежде чем получить этот результат в 130 мсек.

UPDATE:
Я следовал советам в ответ от PSCoder (удалял все, кроме RazorViewEngine), и сократил время рендеринга вдвое:

MVC rendering picture 2

Это действительно хорошо, но я все еще получаю около 70 мс или выше для основного действия Render на странице; в идеале я бы хотел сделать это вдвое или лучше.

В частности, я хотел бы спросить:

  • Оказывает ли это время рендеринга слишком медленное или среднее значение для моей машины?
  • Есть ли способ ускорить его?
4b9b3361

Ответ 1

Это может помочь улучшить проблему производительности ASP.NET MVC, но одно повышение производительности, которое вы можете сделать, - очистить все механизмы просмотра и добавить используемые вами. скажем, для ex: - RazorViewEngine. MVC регистрирует 2 по умолчанию движки просмотра Webforms и Razor, поэтому очистка и добавление тех, которые используются сами по себе, улучшат производительность поиска.

Вы можете добавить это в global.asax Application_Start.

        ViewEngines.Engines.Clear();    
        ViewEngines.Engines.Add(new RazorViewEngine());      

Чтобы полностью использовать кеширование вида, и, таким образом, снова коэффициент усиления производительности скомпилирует код в режиме деблокирования и убедитесь, что ваш файл web.config настроен с помощью <compilation debug="false" /> для просмотра, чтобы найти кеширование для ввода.

Ответ 2

Добавление в ответ @PSCoder - мы всегда проверяем только файлы `.CSHTML

ViewEngines.Engines.Clear();

IViewEngine razorEngine = new RazorViewEngine() { FileExtensions = new string[] { "cshtml" } };

ViewEngines.Engines.Add(razorEngine);

Кроме того, убедитесь, что вы работаете в Release Mode - это абсолютно важно, поскольку ASP/Razor/MVC применяет довольно агрессивное кэширование, когда в режиме выпуска

<compilation targetFramework="4.0" debug="false"> в вашем файле Web.Config.

Sam Saffron/Qaru также посмотрел на производительность рендеринга:

http://samsaffron.com/archive/2011/08/16/Oh+view+where+are+thou+finding+views+in+ASPNET+MVC3+