2008-10-18 8 views
8

Una pregunta arquitectura general de Sitecore 6 ...de Sitecore "reciente" Artículo

Digamos que tenemos una situación en la que tenemos 10.000 artículos ejecución de una plantilla “Comunicado de prensa”. Estos artículos se almacenan en Sitecore al /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 tratando de construir algo equivalente a SQL de:

SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate 

lectura a través de la documentación de consulta Sitecore, parece que la mayoría de esta consulta debe ser manejado en nuestra aplicación de C#. Algo así 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(); 
} 

Parecería que la carga 10.000 artículos Sitecore de la base de datos en la memoria y luego la clasificación cada vez que nuestra página web es golpeado sería inaceptable desde una perspectiva de rendimiento.

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

Respuesta

6

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

Centrándose en el almacenamiento en caché es una buena cosa. Usar el almacenamiento en caché estándar de representación de Sitecore es el enfoque más simple, no creo que necesite algo más complejo que eso en este caso.

Ayuda a comprender que Sitecore query can be resolved either at the SQL or API levels, que afecta el rendimiento y en ocasiones se puede utilizar para su ventaja.

Fast query está integrado en Sitecore 6 y hace que todas las consultas se ejecuten a nivel SQL, lo que aumenta drásticamente el rendimiento. Tampoco admite clasificación y TOP en este momento, pero estamos considerando cómo se puede agregar.

+0

Por favor, actualice estos enlaces. –

+0

@Alexy: su enlace está roto. –

2

Una solución al problema de las "10 últimas noticias" es usar Lucene.

Esto es one way of doing it.

+0

Definitivamente un trabajo para la indexación de Lucene. –

Cuestiones relacionadas