Question

Une question générale sur l'architecture dans Sitecore 6 ...

Supposons que nous ayons 10 000 éléments en train de mettre en œuvre un & # 8220; Communiqué de presse & # 8221; modèle. Ces éléments sont stockés dans Sitecore sous / sitecore / content / home / press / / * . Nous aimerions afficher sur notre page d'accueil certaines informations concernant les 3 derniers communiqués de presse.

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

SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate

En lisant la documentation de la requête Sitecore, il semble que la majorité de cette requête doit être géré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 en mémoire de 10 000 articles Sitecore à partir de la base de données, puis leur tri à chaque fois que notre page d'accueil est affichée, seraient inacceptables du point de vue des performances.

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

Était-ce utile?

La solution

La requête Sitecore (ou une requête rapide) ne prend pas en charge le tri ni les constructions TOP. Par conséquent, ces éléments doivent être exprimés dans le code.

Se concentrer sur la mise en cache est une bonne chose. L'utilisation de la mise en cache de rendu Sitecore standard est une approche la plus simple. Je pense que vous n'avez besoin de rien de plus complexe que cela dans ce cas.

Il est utile de comprendre que la la requête Sitecore peut être résolue soit au niveau SQL ou API , ce qui affecte les performances et peut parfois être utilisé à votre avantage.

Rapide query est intégré à Sitecore 6 et permet à toutes les requêtes de s'exécuter au niveau SQL, augmentant ainsi considérablement les performances. De plus, il ne prend pas en charge le tri et le traitement TOP pour le moment, mais nous envisageons la possibilité de l'ajouter.

Autres conseils

Une solution aux "10 dernières nouvelles" Le problème est d’utiliser Lucene.

Il s'agit de une façon de le faire . .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top