MvcSiteMap Provider性能问题

时间:2011-12-15 13:54:38

标签: asp.net-mvc-3 mvcsitemapprovider asp.net-mvc-sitemap

我正在使用一个动态节点提供程序,它总共包含6000个节点。第一次请求剃刀视图包含 @ Html.MvcSiteMap()。SiteMapPath(),该页面最多可能需要7500ms才能加载。

这个时间都在这个调用中占用,因为在动态节点提供程序中分析我的代码需要28ms。

如果我取出mvc.sitemap中的所有动态节点,代码将返回非常快的280毫秒。

有没有办法预先加载 - 我使用IIS 7,因此无法使用应用程序预热模块或新的应用程序启动加温部分,如果IIS 7.5。

我正在使用最新的NuGet版本3.2.1

1 个答案:

答案 0 :(得分:0)

由于一些增强功能,MvcSiteMapProvider v4的效果得到了显着改善:

  1. 内部词典现在使用泛型而不是HashTable(使用System.Object)。
  2. 传递的类型现在是ISiteMapNode,因此在使用它之前不再需要进行转换。
  3. cache has been completely redesigned以利用.NET的System.Runtime.Caching.ObjectCache扩展点。
  4. ACL模块已经过简化,可以更快地执行。
  5. 现在,在一些昂贵的操作中自动完成请求缓存。
  6. 菜单和站点地图已经过重新设计,仅在必要时调用ACL模块。