8

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 项目从数据库加载到内存中,然后对它们进行排序似乎是不可接受的。

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

4

2 回答 2

6

Sitecore Query(或快速查询)不支持排序或 TOP 构造,因此这些东西必须用代码表示。

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

它有助于理解Sitecore 查询可以在 SQL 或 API 级别解决,这确实会影响性能并且有时可以为您所用。

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

于 2008-10-22T06:33:03.973 回答
2

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

这是一种方法

于 2009-02-06T17:15:28.130 回答