因此,在我们的网站中,我们使用 SiteMap
。对于每个请求,我们都会呈现一些菜单,为此我们在辅助函数中执行 SiteMap.RootNode
。
现在,当我使用 dotTrace 对我的网站进行分析时,我发现 get_RootNode()
花费了很多时间(大约 70-75 毫秒)。但是我们知道 SiteMap
是静态的。因此,我想以某种方式在 Application_Start
中仅获取一次 SiteMap.RootNode
并将在每个请求中访问它。
所以,我的问题是,
我的做法是否正确?
我该怎么做?
或者有什么有效的方法可以使用 SiteMap.RootNode
谢谢。
最佳答案
正是出于这个原因,我避免使用站点地图。 它们在最多几百页时没问题,但超出该范围后性能将开始下降。
我认为它们旨在成为小型网站或其他网站的简单入门类型工具。
我编写了自己的 cms,理论上,如果您使用以相同方式构建数据的类似 cms/应用程序,您应该能够通过获取当前的所有子项在更短的时间内从数据库中提取菜单列表页面 ID/某种形式的类似基于上下文的查询。
您可以(正如我所知)将您的站点地图分解为更小的部分 map ,然后从中提取菜单列表以提高性能。
但是,如果您的网站少于 500 页,我会质疑编码...它是自定义站点地图吗? 提供者是在等待资源锁还是什么?
您是否考虑过使用 xmldocument 类来提取数据? (只是一个想法)
关于c# - 如何更有效地使用 SiteMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2840025/