Вопрос

У меня есть вид / страница ASP.NET (Dynamic), которая создана из вложенных html.renderpartials. Вид отправляется соответствующая просмотраModel для рендеринга.

Firebug говорит, что ответ Get для HTML составляет 9,89 секунды на 9,5 кБ. Для сравнения страницы FAQ (статический HTML) того же сайта составляет 1,3 секунды для 17K.

Сначала я подумал, что это был задний конец сущности SQL, замедляя вещи из-за сложности ViewModel, но, похоже, построит ViewModel менее чем за 1 сек в соответствии с моими журналами.

Любые идеи, почему вид MVC занимает так много времени, чтобы рендер, и как я могу ускорить это? Я рассматриваю частичную загрузку через Ajax.

(BTW I GZIP и использую ETC CDN - у меня есть Yslowed весь сайт до смерти)

Редактировать:

Добавленные таймеры (секундомер) на онициацииExecuting / OncaIctionExecuted и onResultExecution / onresultexecuted.

09/12/2010 18:39:20: Контроллер: Профиль Действие: Index Exped Time: 680.6431 - Действие

09/12/2010 18:39:29: Контроллер: Профиль Действие: Индекс Прошедшее время: 9202.063 - Результат

9 секунд для рамки для визуализации представления.

Это было полезно?

Решение

Проблема решена

Во-первых, благодаря вам все для ваших предложений. Я последовал за каждое предложение снова и снова, пока не нашел проблему. Это то, что было неверным, и, возможно, кто-то мог уточнить для других.

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

foreach (ProfileComment item in Model)
{
    Html.RenderPartial("UserActivityComment", item);
}
...
Friends friend = Model.Friends.Where(e => e.ID == activity.ActionID).FirstOrDefault();
if (friend.FriendsProfile.UserName != Page.User.Identity.Name)
{
    Html.RenderPartial("UserActivityFriend.ascx", friend);
}

Объект ProfileComment и Friends (плюс другие) являются частью ViewModel, которую я генерирую и передаю на страницу. Теперь VM VM генерируется через структуру объекта менее чем за 0,3 секунды, поэтому я предположил все в порядке с VM.

Огромная задержка пришла, когда я хотел, чтобы взглянуть, чтобы обработать его. Модель в «For Loop» была помечена, и поэтому была первым мастером исполнителя.

HMM странно, модель скольжена быстро, но не обрабатывается быстро. Решение:

_entities.Friends.MergeOption = MergeOption.NoTracking;
_entities.ProfileComment.MergeOption = MergeOption.NoTracking;

Я думаю, что проблема извлекает объект из виртуальной машины, чтобы отправить частично, поскольку он также хотел поддерживать управление субъектами для отношений.

Более подробная информация о Исследование AIA

и blogs.microsoft.co.il/blogs/gilf/Archive/2009/02/20/disabling-change-tracking-in-antity-framework.aspx.

Пожалуйста, не стесняйтесь расширить это более подробно. Кстати, повышение производительности было огромный!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top