3

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

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

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

有什么方法可以预加载这个 - 我正在使用 IIS 7,因此如果 IIS 7.5,则无法使用应用程序预热模块或新的应用程序启动预热部分。

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

4

1 回答 1

0

由于多项增强功能, MvcSiteMapProvider v4的性能得到了显着提升:

  1. 内部字典现在使用泛型而不是 HashTable(使用 System.Object)。
  2. 传递的类型现在是 ISiteMapNode,因此在使用之前不再需要强制转换。
  3. 缓存已完全重新设计,以利用 .NET 的 System.Runtime.Caching.ObjectCache 扩展点。
  4. ACL 模块已被简化以更快地执行。
  5. 请求缓存现在在一些昂贵的操作上自动完成。
  6. 菜单和站点地图已重新设计,仅在必要时调用 ACL 模块。
于 2013-08-18T10:43:09.573 回答