Частичное представление ASP.NET MVC медленное?

Мне просто довелось проверить производительность приложения ASP.NET MVC, которое мы создаем. Я собирался вставить частичное представление в цикл, и просто из любопытства я проверил, сколько времени понадобилось для рендеринга страницы. Результат был не очень хорошим.

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

  • Кажется, что один частичный рендеринг вызывает около 5 мс (по крайней мере, в моей среде). Когда я встраиваю фактическое содержимое частичного представления, я получаю практически 0 мс.
  • Когда я включаю пустой частичный вид в цикл из примерно 70 элементов, общее время рендеринга увеличивается на ~ 60 мс. Так что, возможно, существует некоторое кэширование, но оно не идеальное.
  • Я отладил ASP.NET MVC и обнаружил, что частичные представления кэшируются, но он только кэширует пути к ascx. Затем фактические представления создаются каждый раз с использованием метода BuildManager.CreateInstanceFromVirtualPath .
  • А теперь интересный момент: когда включить то же частичное представление с использованием синтаксиса WebForms ( ), дополнительные 60 мс уходят.

Таким образом, исходя из наблюдений выше, кажется, что виновником является метод BuildManager.CreateInstanceFromVirtualPath. Возможно, это не предназначалось, чтобы быть вызванным многократно. Веб-формы, по-видимому, не используют его; или использовать его как-то только один раз для каждого ascx?

21
задан Jason Berkan 28 September 2010 в 17:12
поделиться