繁体   English   中英

Sitecore的“最新”项目

[英]Sitecore's “Latest” Item

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 Query(或快速查询)不支持排序或TOP构造,因此必须在代码中表达这些内容。

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

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

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

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

这是一种方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM