3

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

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

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

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

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

ответ

0

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

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