2008-10-18 6 views
8

Une architecture générale de Sitecore dans Sitecore 6 ...question « Dernière » Item

Disons que nous avons une situation où nous avons 10.000 articles de mise en œuvre d'un modèle « Communiqué de presse ». Ces articles sont stockés dans Sitecore au /sitecore/content/home/press/*. Sur notre page d'accueil, nous aimerions afficher quelques informations concernant les 3 communiqués de presse les plus récents.

Nous cherchons à construire quelque chose d'équivalent à celui SQL:

SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate 

La lecture de la documentation de requête Sitecore, il semble que la majorité de cette requête doit être traitée dans notre application C#. Quelque chose comme:

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

Il semblerait que le chargement de 10.000 articles Sitecore de la base de données en mémoire, puis les trier chaque fois que notre page d'accueil est touché serait inacceptable du point de vue de la performance.

Existe-t-il un moyen plus efficace d'exprimer cette requête? Ou devrais-je me concentrer sur la mise en cache de sortie et/ou le pré-calcul?

Répondre

6

Sitecore Query (ou une requête rapide) ne supporte pas le tri ou les constructions TOP, donc ces choses doivent être exprimées en code. Se concentrer sur la mise en cache est une bonne chose. L'utilisation de la mise en cache de rendu de Sitecore standard est une approche plus simple, je ne pense pas que vous ayez besoin de quelque chose de plus complexe que cela dans ce cas.

Il est utile de comprendre que Sitecore query can be resolved either at the SQL or API levels, ce qui affecte les performances et peut parfois être utilisé à votre avantage.

Fast query est construit dans Sitecore 6 et fait exécuter toutes les requêtes au niveau SQL, ce qui augmente considérablement les performances. Il ne supporte pas non plus le tri et le TOP pour le moment, mais nous réfléchissons à la manière de l'ajouter.

+0

Veuillez mettre à jour ces liens. –

+0

@Alexy: votre lien est cassé. –

2

Une solution au problème des "10 dernières nouvelles" est d'utiliser Lucene.

Ceci est one way of doing il.

+0

Certainement un travail pour l'indexation Lucene. –