【问题标题】:telerik mvc sitemap performanceTelerik mvc 站点地图性能
【发布时间】:2011-02-18 17:23:25
【问题描述】:

我正在使用 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)

Action 方法本身执行速度很快

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();
    }
}

是否有人遇到过同样的问题和/或知道问题可能是什么以及如何解决?

谢谢

【问题讨论】:

  • 不是已知问题。 web.sitemap 中有多少项?

标签: c# asp.net-mvc asp.net-mvc-2 telerik telerik-mvc


【解决方案1】:

这里引用了论坛帖子中的答案:

经过进一步调查,发现 Spring.Web.Mvc.dll 是问题所在。在这种情况下,PanelBar UI 组件将检查每个节点及其子节点是否可访问。因此,“安全修剪”功能在这种情况下有效。 IsAccessible() 方法将获取所有控制器和操作属性以检查项目可访问性。您可能已经猜到,调试模式下的应用程序和对 Spring.Web.Mvc.dll 的引用的组合会导致这个性能问题,因为检索到的属性没有被缓存。 如果您需要更好的性能,我建议您在发布模式下进行测试。尽管如此,我们将进一步调查这个问题,并尝试为这个问题找到更好的解决方案。可能会一直缓存控制器属性。

【讨论】:

    猜你喜欢
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多