2

因此,在我们的网站中,我们使用SiteMap. 对于每个请求,我们都会渲染一些菜单,并SiteMap.RootNode在辅助函数中执行此操作。

现在,当我使用dotTrace对我的网站进行分析时,我看到这get_RootNode()需要很多时间(大约 70-75 毫秒)。但我们知道这SiteMap是静态的。所以,我想以某种方式获得SiteMap.RootNode唯一的一次,Application_Start并通过每个请求访问它。

所以,我的问题是,

我的方法正确吗?我该怎么做?或者有什么有效的方法可以使用SiteMap.RootNode

谢谢。

4

1 回答 1

0

正是出于这个原因,我避免使用站点地图。它们最多可以容纳几百页,但超过此性能将开始下降。

我认为它们旨在成为小型网站或其他东西的简单入门类型工具。

我编写了自己的 cms,理论上,如果您使用类似的 cms / 应用程序以相同的方式构建数据,您应该能够通过获取当前页面 id 的所有子项在更短的时间内从数据库中提取菜单列表/某种形式的类似的基于上下文的查询。

但是,您可以(据我所知)将您的站点地图分解为较小的部分地图,然后从中提取菜单列表以提高性能。

但是,如果您的网站少于 500 页,我会质疑编码……它是自定义站点地图吗?提供者是在等待资源锁还是什么?

您是否考虑过使用 xmldocument 类来提取数据?(只是一个想法)

于 2010-05-17T15:23:22.577 回答