[英]Sitecore's “Latest” Item
Sitecore 6中的一般架构问题......
假设我们有10,000个项目实施“新闻稿”模板。 这些项目存储在Sitecore /sitecore/content/home/press/*
。 在我们的主页上,我们想要显示有关最近3个新闻稿的一些信息。
我们正在寻找构建与SQL相当的东西:
SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate
通过Sitecore查询文档阅读,听起来大多数查询必须在我们的C#应用程序中处理。 就像是:
public Item[] GetRecentPressReleases()
{
string query = "/sitecore/content/home/press/*";
Item[] items = Sitecore.Context.Database.SelectItems(query);
Array.Sort(items, new PressReleaseDateComparer());
return items.Take(3).ToArray();
}
从性能角度来看,似乎从数据库中将10,000个Sitecore项目加载到内存中,然后在每次主页被点击时对它们进行排序是不可接受的。
是否有更有效的方式来表达此查询? 或者我应该专注于输出缓存和/或预先计算?
Sitecore Query(或快速查询)不支持排序或TOP构造,因此必须在代码中表达这些内容。
专注于缓存是一件好事。 使用标准的Sitecore渲染缓存是一种最简单的方法,我认为你不需要比这种情况更复杂的东西。
有助于理解Sitecore查询可以在SQL或API级别解决 ,这确实会影响性能,有时可以用于您的优势。
Sitecore 6内置了快速查询 ,使所有查询都在SQL级别执行,从而大大提高了性能。 它目前也不支持排序和TOP,但我们正在考虑如何添加它。
“10最新消息”问题的一个解决方案是使用Lucene。
这是一种方法 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.