KamoCRM

Content json をロードしてパブリックツリーのインデックスをビルドし、読み込みを2回停止しないでください

PerformanceKBService
Shipped
2026年9月23日 2:17 UTC
Author
Kamo
Commit
155e7de

buildPublicTreeIndex は、小さな構造インデックス (parent/child, slug path, ancestors) をビルドします。 org 内のすべてのパブリック記事が、完全な KbArticle 行をロードしていた — content json 含む, 列の残りの部分のための数百バイトに対して1列あたり〜6.6 KBで測定. ツリーのインデックスとそれのすべての下流(すべてのリスト/ツリーのノード、パス、および ancestor の解像度) は content json を決して読みません。単一パーティクルだけがそれをシリアライズし、 1列は既に独立したルックアップから来ています。 300粒子組織のツリー/リスト/単一 応答は、データベースからボディテキストの~2 MBを完全に破棄するために引き出されましたが、 1行。 **************** は、実際に名前で読み込まれるすべてのインデックスを選択 (a) JPQL のプロジェクションクエリはリポジトリメソッドではなく、KbArticleリポジトリはkamo-shared-libraryに住んでいます。 ここのスコープから出て、実の KbArticle インスタンスをエンティティティティエントのビルダからビルドします。 セッションを主張したり、添付したりすることはありません。 PublicTreeIndexの既存のリーダーは、作業を続けます unchanged; getContentJson() は単純に null で、コードにのみ重要 それをシリアライズし、単粒子の読み込みの外側に何もしません。 別々に、/tree-by-parent-slug は両方とも呼ばれます **************************************** (積み込み) すべての公開記事のコピーは、同じ子供マップのビルドを再構築するために公開TreeIndexは既にビルド) そして、buildPublicTreeIndex — 1つのリクエスト、完全なorg-wideの記事リストが2回読み込まれました。 旧今 再構築するのではなく、呼び出し元がパラメータとして組み込まれているインデックスを取ります。 また、translateRefs (breadcrumbs と "see also" link, non-English) は各 ref の翻訳を解決しました ref の guid を KbArticle に戻して、その翻訳をクエリすることで、2つのクエリ 参照ごとの。 すでに記事のuidを今呼びます(KbArticleRefDTO.uid、内部) — @JsonIgnore, 決して公的な応答で), なので ************************ リスト内のすべての ref を代わりに 1 つのバッチで解決します。 テスト: KbArticleServiceTreeIndexTest は、プロジェクションがあらゆるフィールドをフルエンティティティエントロードすると主張しています。 は (contentJson を除く, null をアサート) ツリー/path/ancestor の計算をビルドする つまり、フィクスチャーベースのフルエンティティロードが生成された3レベルの形状と同じです。 古いvs-new チェック. メニュー フランスで終わるべき/by-slug端を練習すれば 既定のルックアップは、ギドのラウンドトリップを置き換える **************** は 決して ref に呼ばれません.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing