8 Stimmen

Sitecores "Neuester" Artikel

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?

6voto

Alexey Rusakov Punkte 496

Sitecore Query (oder eine schnelle Abfrage) unterstützt keine Sortier- oder TOP-Konstrukte, so dass diese Dinge im Code ausgedrückt werden müssen.

Die Konzentration auf das Caching ist eine gute Sache. Die Verwendung von standardmäßigem Sitecore-Rendering-Caching ist der einfachste Ansatz, ich glaube nicht, dass Sie in diesem Fall etwas Komplexeres als das brauchen.

Es hilft zu verstehen, dass Sitecore-Abfragen können entweder auf der SQL- oder auf der API-Ebene aufgelöst werden was sich auf die Leistung auswirkt und manchmal zu Ihrem Vorteil genutzt werden kann.

Schnelle Abfrage ist in Sitecore 6 eingebaut und sorgt dafür, dass alle Abfragen auf SQL-Ebene ausgeführt werden, was die Leistung drastisch erhöht. Es unterstützt im Moment auch keine Sortierung und TOP, aber wir überlegen, wie dies hinzugefügt werden kann.

2voto

herskinduk Punkte 1187

Eine Lösung für das Problem der "10 neuesten Nachrichten" ist die Verwendung von Lucene.

Dies ist eine Art zu tun es.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X