Проблема производительности провайдера MvcSiteMap - PullRequest
3 голосов
/ 15 декабря 2011

Я использую провайдера динамических узлов, который содержит в общей сложности 6000 узлов. Первый раз, когда запрашивается бритва, которая содержит @ Html.MvcSiteMap (). SiteMapPath (), загрузка страницы может занять до 7500 мс.

Все время занято в этом вызове, так как при профилировании моего кода в провайдере динамического узла это занимает 28 мс.

Если я уберу все динамические узлы в mvc.sitemap, код вернется очень быстро 280 мс.

Есть ли способ предварительно загрузить это - я использую IIS 7 и поэтому не могу использовать модуль прогрева приложения или новую часть прогрева запуска приложения, если IIS 7.5.

Я использую последнюю версию NuGet 3.2.1

1 Ответ

0 голосов
/ 18 августа 2013

Производительность была значительно улучшена в MvcSiteMapProvider v4 благодаря нескольким улучшениям:

  1. Во внутренних словарях теперь используются дженерики, а не HashTable (который использует System.Object).
  2. Переданный тип теперь ISiteMapNode, поэтому его больше не нужно приводить перед использованием.
  3. Кэш был полностью переработан , чтобы использовать преимущества Системы.Runtime.Caching.ObjectCache. Точка расширения .NET.
  4. Модуль ACL оптимизирован для более быстрого выполнения.
  5. Кэширование запросов теперь выполняется автоматически для некоторых дорогостоящих операций.
  6. Меню и карта сайта были переработаны для вызова модуля ACL только при необходимости.
...