Наше веб-приложение содержит десятки частичных представлений, некоторые из которых являются дочерними. Мы заметили, что приложение наступает медленно при первом загрузке, для инициализации каждого вида, которое он вызывает в первый раз, требуется от 0,5 до 1 секунды. Я проследил сроки и обнаружил, что это:Html.RenderPartial slow
Html.RenderPartial("~/Full/Relative/Path/To/View.cshtml", null);
может занять около 1 секунды, даже если вид абсолютно пуст. В то же время это:
var view = ViewEngines.Engines.FindPartialView(
ViewContext.Controller.ControllerContext, "~/Full/Relative/Path/To/View.cshtml");
занимает 1 миллисекунду, поэтому времени на поиск файла не тратится.
Вопросы:
1. Разве это нормально, когда компилятор представления занимает так много времени?
2. Есть ли другой способ быстро сделать первый вызов, но не имеет представления, предварительно скомпилированного с директивой в csproj?
ps: странно, что одни и те же представления загружались быстрее в начале разработки приложения.
Возможно, это поможет http://codeclimber.net.nz/archive/2009/04/22/how-to-improve-htmlhelper.renderpartial-performances-donrsquot-run-in-debug-mode.aspx –
@ DZL спасибо, я знаю, что это только ускоряет дальнейшие звонки, а не начальные. – LINQ2Vodka
Upvoted (если только для вашего довольно крутого выбора имени пользователя) :) –