代码之家  ›  专栏  ›  技术社区  ›  Kyle Chafin

SiteCore的“最新”项目

  •  8
  • Kyle Chafin  · 技术社区  · 17 年前

    SiteCore6中的一般架构问题…

    让___新闻稿__模板实现10000个项目。这些项目存储在SiteCore中 /sitecore/content/home/press/* . 在我们的主页上,我们想展示关于最近三次新闻发布的一些信息。

    我们希望构建一个与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();
    }
    

    从性能角度来看,从数据库将10000个SiteCore项目加载到内存中,然后在每次点击主页时对其进行排序似乎是不可接受的。

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

    2 回复  |  直到 15 年前
        1
  •  6
  •   Alexey Rusakov    15 年前

    SiteCore查询(或快速查询)不支持排序或顶部构造,因此这些内容必须用代码表示。

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

    这有助于理解 Sitecore query can be resolved either at the SQL or API levels 这确实会影响性能,有时也会对您有利。

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

        2
  •  2
  •   herskinduk    17 年前

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

    这是 one way of doing 它。

    推荐文章