質問

Sitecore 6の一般的なアーキテクチャの質問...

“プレスリリース”を実装する10,000のアイテムがある状況があるとしましょう。テンプレート。これらのアイテムは、Sitecoreの / sitecore / content / home / press / * に保存されます。ホームページでは、最新の3つのプレスリリースに関する情報を表示したいと思います。

SQL’ sに相当するものを構築しようとしています:

SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate

Sitecoreクエリドキュメントを読むと、このクエリの大部分はC#アプリケーションで処理する必要があるようです。次のようなもの:

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

10,000個のSitecoreアイテムをデータベースからメモリにロードし、ホームページにアクセスするたびにソートすることは、パフォーマンスの観点から受け入れられないようです。

このクエリをより効率的に表現する方法はありますか?または、出力キャッシュおよび/または事前計算に集中する必要がありますか?

役に立ちましたか?

解決

Sitecoreクエリ(または高速クエリ)はソートまたはTOP構造をサポートしていないため、これらのことはコードで表現する必要があります。

キャッシュに焦点を当てることは良いことです。標準のSitecoreレンダリングキャッシュの使用は最も簡単なアプローチです。この場合よりも複雑なものは必要ないと思います。

Sitecoreクエリはどちらでも解決できることを理解するのに役立ちますSQLまたはAPIレベルで、これはパフォーマンスに影響し、場合によっては有利に使用できます。

高速query はSitecore 6に組み込まれており、すべてのクエリをSQLレベルで実行し、パフォーマンスを劇的に向上させます。現時点ではソートとTOPもサポートしていませんが、これをどのように追加できるかを検討しています。

他のヒント

「10個の最新ニュース」に対する1つのソリューション問題はLuceneを使用することです。

これは 1つの方法です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top