因此,在我们的网站上,我们使用的是SiteMap
。对于每个请求,我们都会渲染一些菜单,为此,我们在辅助函数中执行SiteMap.RootNode
。
现在,当我使用 dotTrace 对我的网站进行概要分析时,我看到get_RootNode()
花了很多时间(大约70-75毫秒)。但我们知道SiteMap
是静态的。所以,我想在某种程度上我只会在SiteMap.RootNode
中获得Application_Start
一次,并会在每个请求中访问它。
所以,我的问题是,
我的方法是否正确?
我该怎么办?
或者是否有任何有效的方法可以使用SiteMap.RootNode
感谢。
答案 0 :(得分:0)
我正是因为这个原因而避免使用站点地图。 它们可以达到几百页,但除此之外,性能将开始降低。
我认为它们应该是一个简单的入门类型工具,适用于较小的网站或其他东西。
我写了自己的cms,理论上如果你使用类似的cms / app来构建数据的方式与你应该能够在更短的时间内从数据库中提取菜单列表的方式得到当前的所有孩子页面ID /某种形式的类似基于上下文的查询。
您可以(据我所知)将您的站点地图分解为较小的部分地图,然后从中提取菜单列表以提高效果。
但是,如果您的网站少于500页,我会质疑编码...它是自定义网站地图吗? 提供者是在等待资源锁还是什么?
您是否考虑过使用xmldocument类来提取数据? (只是一个想法)