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?

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top