telerik mvc производительность карты сайта - PullRequest
2 голосов
/ 18 февраля 2011

Я использую расширения Telerik MVC для привязки карты сайта, как показано на странице их демонстраций: http://demos.telerik.com/aspnet-mvc/panelbar/sitemapbinding

Но при рендеринге карты сайта со следующим кодом это занимает около 6 секунд

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
    Html.Telerik().PanelBar()
       .Name("SiteMapPanelBar")
       .BindTo("sitemap")
       .Render();
%>

(та же проблема существует с TreeView вместо PanelBar)

Сам метод действия выполняется быстро

public partial class NavigationController : Controller
{
    public const string SiteMapFile = "~/Web.sitemap";
    public const string SiteMapName = "siteMap";
    public const string SiteMapKey = "siteMap";

    [PopulateSiteMap(SiteMapName = SiteMapName, ViewDataKey = SiteMapKey)]
    public virtual ActionResult SiteMap()
    {
        if (!SiteMapManager.SiteMaps.ContainsKey(SiteMapKey))
        {
            SiteMapManager.SiteMaps.Register<XmlSiteMap>(SiteMapKey, sitmap => sitmap.LoadFrom(SiteMapFile));
        }

        return View();
    }
}

Кто-нибудь сталкивался с такой же проблемой и / или знает, что это за проблема и как ее решить?

Спасибо

1 Ответ

1 голос
/ 22 февраля 2011

Вот цитата ответа в размещенной ветке форума:

После дальнейшего изучения выясняется, что Spring.Web.Mvc.dll является проблемой. В этом случае компонент пользовательского интерфейса PanelBar проверит наличие каждого узла и его дочерних элементов. Таким образом, функция «Обрезка безопасности» работает в этом случае. Метод IsAccessible () получит все контроллеры и атрибуты действия для проверки доступности элемента. Вы, наверное, уже догадались, что сочетание приложения в режиме отладки и ссылки на Spring.Web.Mvc.dll вызовет эту проблему производительности, поскольку извлеченные атрибуты не кэшируются. Если вам нужно улучшить производительность, я предлагаю вам протестировать в режиме релиза. Тем не менее, мы продолжим исследовать эту проблему и постараемся найти лучшее решение этой проблемы. Вероятно, всегда будет кешировать атрибуты контроллеров.

...