Sitecore的“最新”项目

时间:2008-10-18 15:26:09

标签: c# asp.net sitecore

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项目加载到内存中,然后在每次主页被点击时对它们进行排序都是不可接受的。

是否有更有效的方式来表达此查询?或者我应该专注于输出缓存和/或预先计算?

2 个答案:

答案 0 :(得分:6)

Sitecore查询(或快速查询)不支持排序或TOP结构,因此必须在代码中表达这些内容。

专注于缓存是一件好事。使用标准的Sitecore渲染缓存是一种最简单的方法,我认为你不需要比这种情况更复杂的东西。

有助于理解Sitecore query can be resolved either at the SQL or API levels,这会影响效果并且有时可以用于您的优势。

Fast query内置于Sitecore 6中,使所有查询都在SQL级别执行,从而大大提高了性能。它目前也不支持排序和TOP,但我们正在考虑如何添加它。

答案 1 :(得分:2)

“10最新消息”问题的一个解决方案是使用Lucene。

这是one way of doing它。