У меня есть страница с кучей виджетов.Каждый виджет является представлением.Прямо сейчас рендеринг виджетов выполняется в цикле foreach следующим образом.
public class WidgetCollection : List<Widget>, IPersonalizable
{
public void Render(HtmlHelper html)
{
foreach (Widget w in this)
{
html.RenderAction("Default", "Widget", new { model = w });
}
}
Но это означает, что некоторые из моих виджетов, которые визуализируются за 800 мс, потому что они связаны с вводом-выводом, блокируют множество других виджетов, кромевозьмите 100мс, чтобы сделать.Таким образом, общее время, необходимое для отображения страницы, составляет около 3 секунд.Я хочу, чтобы страница отображалась всего за 800 мс или как можно ближе к этому.
Одна из моих идей заключалась в том, чтобы вызвать html.Action (), чтобы получить строковое значение для каждого параллельного действия, но MVC, похоже, не любит рендеринг представлений параллельно.Я всегда получаю ошибку «Объект не установлен в экземпляр объекта», когда я пытаюсь это сделать.Ошибка происходит из глубины стека MVC, поэтому я думаю, что это просто ошибка MVC.
У кого-нибудь есть идеи по увеличению скорости рендеринга страницы?