2011-02-18 64 views
2

我使用Telerik的MVC擴展結合喜歡展示他們的演示頁面上的網站地圖:http://demos.telerik.com/aspnet-mvc/panelbar/sitemapbindingTelerik的MVC網站導航性能

但與下面的代碼繪製地圖時,它需要大約6秒

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

操作方法本身執行快速

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(); 
    } 
} 
(與樹視圖,而不是PanelBar存在同樣的問題)

有人遇到同樣的問題和/或知道問題可能是什麼以及如何解決?

感謝

+0

不是已知的問題。 web.sitemap中有多少項目? – 2011-02-21 11:29:06

回答

1

這裏是在貼論壇主題答案的報價:

經過進一步調查,它看起來指出Spring.Web.Mvc.dll是問題。在這種情況下,PanelBar UI組件將檢查每個節點及其子節點是否可訪問。因此在這種情況下「安全修整」功能起作用。 IsAccessible()方法將獲得所有控制器和操作屬性,以檢查項目的可訪問性。您可能已經猜測,Debug模式下的應用程序組合以及對Spring.Web.Mvc.dll的引用將導致此性能問題,因爲檢索到的屬性未被緩存。 如果你需要更好的性能,我會建議你在發佈模式下測試。不過,我們會進一步調查此問題,並嘗試爲此問題找到更好的解決方案。可能會一直緩存控制器屬性。