Razbezhkin
@Razbezhkin
программист, преподаватель

Как можно оптимизировать asp.net Action с множеством вызовов Html.RenderAction?

Здравствуйте. Есть следующая ситуация:
Есть в контроллере asp.net метод (Action), который генерирует модель, на основе которого при помощи представления генерируется html страница.
В представлении вызывается несколько Html.RenderAction, чтобы вставить в страницу некоторые генерируемые части.

Проблема заключается в том, что вызовы RenderAction выполняются после того, как выполнен основной Action, т.е. его невозможно распараллелить.

Решения, которые сходу приходят в голову:
1. генерировать модели для представлений, которые сейчас добавляются через RenderAction в основном Action параллельно с основным кодом, добавлять их в основную модель и рендерить при помощи RenderPartial
2. На стороне клиента делать ajax вызовы к тем Action'ам, которые сейчас вызываются через RenderAction (но это ускорит получение страницы пользователем, но не ускорит получение всего контента в целом)

Есть ли еще какие-то решения для распараллеливания и оптимизации такой веб страницы?
Спасибо.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08
Если у тебя проблема с производительностью, то распараллеливание ничего не решит, максимум отложит необходимость решать проблему. Но если так уж охота, то в твоей вьюхе должен вставляться уже готовый html код. Это значит, что тебе надо сначала, до вызова виюхи, асинхронно отрендерить нужные данные, дождаться завершения всех тредов, и уже передавать готовый html код во вьюху.

Сначала у тебя выполняется Action,
Потом асинхронно выполняются все твои Html.RenderAction, в какой-то обертке, которая будет ждать, пока все задачи выполнятся. И уже потом, оттуда передавать данные во view.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы