通过添加新项目刷新繁重的 MvcSiteMapProvider 站点地图

Refresh heavy MvcSiteMapProvider sitemap by adding new items

我有一个包含几个 IDynamicNodeProviders 的站点地图。 例如,当我添加必须放在站点地图中的新闻文章时,我可以使用 SiteMapCacheReleaseAttribute。 如果缓存的释放做的多了会怎么样(可能是一个改动比较多的大站点)? 如果我很好地理解文档,则站点地图会在下一个用户操作时刷新。但是,如果刷新可能需要 10 秒,并且每次有人编辑或添加一些数据时都会执行刷新,那么网站的访问者就会期待一个缓慢的网站。

还是我遗漏了什么?

SiteMapCacheReleaseAttribute 适用于偶尔 add/change/delete 数据的网站管理员,其中重新加载站点地图所需的时间与读取次数相比可以忽略不计。

用户端更好的方法是使用 PreservedRouteParameters property/attribute 到 force a match 这样您就可以为数据库中的每条记录重复使用相同的节点 table .请参阅文章中的可下载演示以查看完整的 CRUD 示例。

如果采用这种方法,您通常需要使用可见性提供程序和 SiteMapTitle 属性来更改面包屑路径的显示,并且您的记录到记录导航必须由应用程序,而不是 MvcSiteMapProvider 的菜单(当您构建页面以执行 CRUD 操作时通常就是这种情况)。

唯一的缺点是您无法获得对搜索引擎的自动 XML 站点地图支持。在这种情况下,您可以 disable the XML Sitemap and either roll your own solution, or use the prototype from here with demo here.