【发布时间】:2008-10-18 15:26:09
【问题描述】:
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 项目从数据库加载到内存中并对其进行排序是不可接受的。
有没有更有效的方式来表达这个查询?还是应该专注于输出缓存和/或预计算?
【问题讨论】: