【问题标题】:Sitecore's "Latest" ItemSitecore 的“最新”项目
【发布时间】: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 项目从数据库加载到内存中并对其进行排序是不可接受的。

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

【问题讨论】:

    标签: c# asp.net sitecore


    【解决方案1】:

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

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

    了解Sitecore query can be resolved either at the SQL or API levels 会有所帮助,它确实会影响性能并且有时可以为您所用。

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

    【讨论】:

      【解决方案2】:

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

      这是one way of doing它。

      【讨论】:

      • 绝对是 Lucene 索引的工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多