8

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

「プレス リリース」テンプレートを実装する 10,000 個のアイテムがある状況があるとします。これらのアイテムは Sitecore の に保存され/sitecore/content/home/press/*ます。ホームページでは、直近3件のプレスリリースに関する情報を掲載したいと思います。

SQL と同等のものを構築しようとしています。

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 アイテムをメモリにロードし、ホームページがヒットするたびにそれらをソートすることは、パフォーマンスの観点からは受け入れられないように思われます。

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

4

2 に答える 2

6

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

キャッシュに焦点を当てることは良いことです。標準の Sitecore レンダリング キャッシュを使用するのが最も簡単な方法です。この場合、それ以上に複雑なことは必要ないと思います。

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

高速クエリは Sitecore 6 に組み込まれており、すべてのクエリが SQL レベルで実行されるため、パフォーマンスが大幅に向上します。また、ソートやTOPも今のところ未対応ですが、追加できるよう検討中です。

于 2008-10-22T06:33:03.973 に答える
2

「最新ニュース 10 件」の問題に対する 1 つの解決策は、Lucene を使用することです。

これは1 つの方法です

于 2009-02-06T17:15:28.130 に答える