Мне просто нужно проверить производительность приложения ASP.NET MVC, которое мы создаем. Я собирался вставить частичный вид в цикл, и только из любопытства я проверил, сколько времени потребовалось, чтобы отобразить страницу. Результат был неудачным.Частичный просмотр ASP.NET MVC медленный?
Мне нужно сделать более убедительное расследование, но на всякий случай был кто-то с похожими проблемами или более глубоким пониманием, вот что я до сих пор. Во-первых, я должен сказать, что все результаты и измерения были выполнены после нескольких загрузок страниц и что я установил <compilation debug="false">
в свой web.config.
- Похоже, что один частичный рендеринг несет около 5 мс удара (по крайней мере, в моей среде). Когда я устанавливаю фактическое содержимое частичного представления, я получаю практически 0 мс.
- Когда я включаю пустой частичный вид в петлю около 70 элементов, общее время рендеринга увеличивается на ~ 60 мс. Таким образом, существует некоторое кэширование, предположительно, но это не идеально.
- Я отлаживал ASP.NET MVC и обнаружил, что частичные представления кэшируются, но он кэширует только пути к ascx. Фактические представления затем создаются каждый раз с использованием метода BuildManager.CreateInstanceFromVirtualPath.
- И теперь интересный бит: если включить тот же частичный вид, используя синтаксис WebForms (
<my:UserContol runat="server" />
), дополнительные 60 мс уходят.
Таким образом, основываясь на наблюдениях выше, кажется, что виновником является метод BuildManager.CreateInstanceFromVirtualPath. Возможно, это не предназначалось для вызова несколько раз. Предполагается, что веб-формы не используют его; или использовать его как-то только один раз для каждого ascx?
Итак, ваш вопрос: являются частичными представлениями медленнее, чем встроенный контент, на который у вас уже есть ответ. :) – bzlm
Вопрос в том, можно ли получить такую же производительность, как в Webforms. –
60 мс не мешает мне. – jfar