Вопрос

Общий вопрос архитектуры в Sitecore 6 ...

Допустим, у нас есть ситуация, когда у нас есть 10000 объектов, реализующих & # 8220; Пресс-релиз & # 8221; шаблон. Эти элементы хранятся в Sitecore по адресу / sitecore / content / home / press / * . На нашей домашней странице мы хотели бы разместить некоторую информацию о 3 самых последних пресс-релизах.

Мы пытаемся создать что-то эквивалентное SQL & # 8217; s:

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 из базы данных в память и последующая сортировка их при каждом обращении к нашей домашней странице была бы неприемлемой с точки зрения производительности.

Есть ли более эффективный способ выразить этот запрос? Или мне следует сосредоточиться на кэшировании и / или предварительном расчете вывода?

Это было полезно?

Решение

Sitecore Query (или быстрый запрос) не поддерживает сортировку или конструкции TOP, поэтому эти вещи должны быть выражены в коде.

Сосредоточиться на кэшировании - это хорошо. Использование стандартного кэширования рендеринга Sitecore - самый простой подход, я не думаю, что вам нужно что-то более сложное, чем это в этом случае.

Это помогает понять, что запрос Sitecore может быть решен либо на уровнях SQL или API , что влияет на производительность и иногда может быть использовано в ваших интересах.

быстро query встроен в Sitecore 6 и заставляет все запросы выполняться на уровне SQL, что значительно повышает производительность. Он также не поддерживает сортировку и TOP в данный момент, но мы рассматриваем, как это можно добавить.

Другие советы

Одно решение для " 10 последних новостей " проблема заключается в использовании Lucene.

Это один из способов сделать это .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top