Sitecore:站点地图生成和性能问题、备选方案
我正在查看Sitecore marketplace中可用的Sitemap模块,它似乎在使用类似于Sitecore:站点地图生成和性能问题、备选方案,sitecore,sitemap,sitecore6,Sitecore,Sitemap,Sitecore6,我正在查看Sitecore marketplace中可用的Sitemap模块,它似乎在使用类似于 [Pseudocode and several lines combined] var items = database.Items[Factory.GetSite(siteName).rootpath].Axes.GetDescendants(); 然后按模板id筛选预期项目,并按项目id排除意外项目 我只是想知道。。这不是根吗?它对性能的要求是指数级的?Sitecore的新功能,请提供一些信息
[Pseudocode and several lines combined]
var items = database.Items[Factory.GetSite(siteName).rootpath].Axes.GetDescendants();
然后按模板id筛选预期项目,并按项目id排除意外项目
我只是想知道。。这不是根吗?它对性能的要求是指数级的?Sitecore的新功能,请提供一些信息。此外,如果我只是想获得所有项目(满足某些条件,例如发布,最重要的是,可能基于主模板或其他东西)。例如,我正在寻找一种方法,如果我实现自己的版本,但没有GUI(例如,通用处理程序),我就不必选择这样的模板当然,绘制出ID会很难看)那么有更好的方法吗?(非常有信心会有一个!)Item.Axes.getDescents()确实可能是一个潜在的性能损失,但是,Sitecore使用所谓的项缓存,它缓存从数据库读取的项。因此,第一次命中可能需要一些时间,但第二次命中可能会从项目缓存中读取项目,您也可以缓存子布局或渲染 但是,我会做一些更改,并使用
StartPath
而不是RootPath来仅包括主页下方的项目,因为StartPath是您的主页,RootPath是父项目。
我还将在内容项的基础模板中添加一个复选框字段“IncludeInSitemap”,并使用LINQ筛选该复选框字段中的项
var items = Sitecore.Context.Database.GetItem(Sitecore.Context.Site.StartItem)
.Axes.GetDescendants()
.Where(item => item.Fields["IncludeInSitemap"].Value.Equals("1"));
当然,您需要添加一些额外的空引用检查,但您知道了。根据项目的数量,可能会对性能造成影响,但如果缓存站点地图,则只会造成一次性影响。如果你索引你的项目,那么你可以从Lucene自己创建。谢谢你对Lucene的建议。我需要检查它是否被编入索引。如果不是的话,那可能就是我们首先需要做的。该死的酷,我确实也在考虑这个复选框解决方案!很酷,谢谢,我今天要试试。