Sitecore & # 8220; Più recente & # 8221; Articolo
Domanda
Una domanda generale di architettura in Sitecore 6 ...
Supponiamo di avere una situazione in cui abbiamo 10.000 articoli che implementano un modello di "Comunicato Stampa". Questi elementi sono memorizzati in Sitecore in / sitecore / content / home / press / *
. Sulla nostra home page, vorremmo visualizzare alcune informazioni relative ai 3 comunicati stampa più recenti.
Stiamo cercando di costruire qualcosa di equivalente a quello di SQL:
SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate
Leggendo la documentazione della query Sitecore, sembra che la maggior parte di questa query debba essere gestita nella nostra applicazione C #. Qualcosa del tipo:
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();
}
Sembrerebbe che caricare 10.000 elementi di Sitecore dal database in memoria e quindi ordinarli ogni volta che viene colpita la nostra homepage sarebbe inaccettabile dal punto di vista delle prestazioni.
Esiste un modo più efficiente per esprimere questa query? O dovrei concentrarmi sulla cache di output e / o sul pre-calcolo?
Soluzione
Query Sitecore (o una query veloce) non supporta l'ordinamento o i costrutti TOP, quindi queste cose devono essere espresse in codice.
Concentrarsi sulla memorizzazione nella cache è una buona cosa. L'uso della cache di rendering standard di Sitecore è un approccio più semplice, in questo caso non credo che tu abbia bisogno di qualcosa di più complesso di così.
Aiuta a capire che La query Sitecore può essere risolta a livello di SQL o API , che influisce sulle prestazioni e talvolta può essere utilizzato a proprio vantaggio.
Veloce query è integrato in Sitecore 6 e esegue tutte le query a livello SQL, aumentando notevolmente le prestazioni. Inoltre, al momento non supporta l'ordinamento e TOP, ma stiamo valutando come aggiungere questo.
Altri suggerimenti
Una soluzione per le "10 ultime notizie" il problema è usare Lucene.
Questo è un modo per farlo .