c# - 如何更有效地使用 SiteMap?

标签 c# asp.net sitemap mvcsitemapprovider

因此,在我们的网站中,我们使用 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/

相关文章:

c# - 在 WCF 中创建有状态的客户端-服务器体系结构

javascript - 通过行单击事件传递动态创建的 html 表格行innertext id

asp.net - 类型上的问号

php - 对 bool 值成员函数 addChild() 的简单 XML 调用

c# - document.selection.createRange() 在 chrome 和 safari 中不起作用

c# - PropertyInfo GetValue 在递归期间抛出错误

.htaccess - 我怎样才能排除不再在我的站点地图中的页面被谷歌索引?

php - 使用户无法访问 'sitemap.xml',但机器人可以访问

c# - 在 MongoDB 中存储动态 JSON 数据

asp.net - 实体类型 'Microsoft.AspNetCore.Mvc.Rendering.SelectListGroup'需要定义主键