2009-07-17 2 views
8

В моем приложении, после включения ASP.NET Tracing в приложении ASP.NET MVC, статистика расчета времени были выключены на фактор 5000.Как создать полный trace.axd в ASP.NET MVC?

У меня есть страница, которая занимает от 7 до 9 секунд для загрузки. Это подтверждается как Firebug, так и полем «время» в файлах журнала IIS. (Это только страница, возвращаемая клиенту, а не какой-либо макет, DOM или выполнение сценария.)

Однако, когда я включаю трассировку приложения в целом (через web.config) и просматриваю вывод трассировки, время взятый из «Begin PreInit» в «End Render», составляет менее 0,001 секунды.

Я предполагаю, что это связано с тем, что Trace.axd был создан с учетом WebForms, а MVC обходит традиционный жизненный цикл страницы.

Однако, даже если я добавляю пользовательские трассы в начале и конце OnActionExecuting/OnActionExecuted, время все равно меньше 0,1 секунды.

Кто-нибудь знает, где в ASP.NET MVC мне нужно будет подключиться, чтобы обеспечить точное время выполнения отчета trace.axd?

ответ

7

Возможно, что время для самого метода действий не является большой частью выполнения. Попробуйте проверить время между OnResultExecuting/OnResultExecuted. Это в основном время, чтобы на самом деле отобразить страницу в HTML, тогда как OnActionExecuting/OnActionExecuted (в основном) время для настройки данных для представления.

Обратите внимание, что если вы используете LINQ, сами запросы данных могут быть отложены до тех пор, пока страница не будет отображена (указанная модель). То есть, медлительность может быть не из-за сложности страницы, а для доступа к данным, даже когда время выполняется при выполнении результата.

+1

+1 хороший момент относительно ленивой загрузки – RedFilter

+0

Yup, OnResultExecuted показывает 9-секундную задержку. Теперь, чтобы понять, почему ... (Я всегда .ToList() мой Linq, прежде чем назначать его модели, так что это не отсроченное исполнение. Я думаю, что мои суровые вложенные мастер-страницы могут быть виновниками.) – Portman

Смежные вопросы