Eine allgemeine Architekturfrage in Sitecore 6...
Nehmen wir an, wir haben eine Situation, in der wir 10.000 Elemente haben, die eine Vorlage "Pressemitteilung" implementieren. Diese Elemente sind in Sitecore gespeichert unter /sitecore/content/home/press/*
. Auf unserer Homepage möchten wir einige Informationen zu den 3 neuesten Pressemitteilungen anzeigen.
Wir versuchen, etwas zu konstruieren, das dem von SQL entspricht:
SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate
Wenn man sich die Sitecore-Abfragedokumentation durchliest, klingt es so, als ob der Großteil dieser Abfrage in unserer C#-Anwendung gehandhabt werden muss. Etwas wie:
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();
}
Es scheint, dass das Laden von 10.000 Sitecore-Elementen aus der Datenbank in den Speicher und das anschließende Sortieren jedes Mal, wenn unsere Homepage aufgerufen wird, aus einer Leistungsperspektive inakzeptabel wäre.
Gibt es eine effizientere Möglichkeit, diese Abfrage zu formulieren? Oder sollte ich mich auf die Zwischenspeicherung und/oder Vorberechnung der Ausgabe konzentrieren?