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 查询(或快速查询)不支持排序或 TOP 构造,因此这些东西必须用代码来表达。

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

这有助于理解这一点 Sitecore 查询可以在 SQL 或 API 级别解决, ,这确实会影响性能,有时可以为您带来优势。

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

其他提示

解决“10条最新新闻”问题的一种解决方案是使用Lucene。

这是 一种做法 它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top