Pregunta

Una pregunta de arquitectura general en Sitecore 6 ...

Digamos que & # 8217; s tenemos una situación en la que tenemos 10,000 elementos que implementan un & # 8220; Comunicado de prensa & # 8221; modelo. Estos elementos se almacenan en Sitecore en / sitecore / content / home / press / * . En nuestra página de inicio, nos gustaría mostrar información sobre los 3 comunicados de prensa más recientes.

Estamos buscando construir algo equivalente a los de SQL & # 8217; s:

SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate

Al leer la documentación de la consulta de Sitecore, parece que la mayoría de esta consulta debe manejarse en nuestra aplicación C #. Algo como:

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();
}

Parece que cargar 10.000 elementos de Sitecore de la base de datos en la memoria y luego ordenarlos cada vez que se golpea nuestra página de inicio sería inaceptable desde una perspectiva de rendimiento.

¿Hay una manera más eficiente de expresar esta consulta? ¿O debería centrarme en el almacenamiento en caché de resultados y / o en el cálculo previo?

¿Fue útil?

Solución

Sitecore Query (o una consulta rápida) no admite ordenación o construcciones TOP, por lo que estas cosas deben expresarse en código.

Enfocarse en el almacenamiento en caché es algo bueno. El uso del almacenamiento en caché estándar de Sitecore es el método más simple, no creo que necesite nada más complejo que eso en este caso.

Es útil entender que La consulta de Sitecore puede resolverse en los niveles de SQL o API , lo que sí afecta el rendimiento y, a veces, se puede utilizar para su beneficio.

Rápido La consulta está integrada en Sitecore 6 y hace que todas las consultas se ejecuten a nivel SQL, lo que aumenta dramáticamente el rendimiento. Tampoco es compatible con la clasificación y el TOP en este momento, pero estamos considerando cómo se puede agregar esto.

Otros consejos

Una solución a las " 10 últimas noticias " El problema es usar Lucene.

Esto es una forma de hacerlo .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top