1. 遅延読み込み

遅延読み込み

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

エンティティにはプロパティとリレーションを遅延読み込みできます。 これはサポートされている機能ですが、通常は必ず読み込みの適切な構成とオプションを使用して必要なメンバーを読み込むようにします。 これにより、読み込みのオーバーヘッドを低減できます。

しかし、コンポーネント間でエンティティを受け渡す場合に、必要なメンバーがその場には存在しないことがあります。 このような状況では遅延読み込みが効果的です。

メンバーを遅延読み込みする場合は、何らかの IO 処理によってサーバーからメンバーをフェッチします。 つづいて、そのメンバーをエンティティのインスタンスに追加します。

1 つ以上のメンバーを遅延読み込みするには、必ずサーバーに対する呼び出しが必要になります。 できるだけ多くの遅延読み込みをグループ化して 1 回で処理するようにします (以下を参照)。

遅延読み込みでは、必要なメンバーが存在するかどうかが必ず確認され、存在すれば IO 処理は実行されません。 この SDK では、読み込み済みのメンバーは上書きされず、読み込まれていないメンバーのみが追加されます。

前提条件

メンバーを遅延読み込みするには、目的のエンティティが Content Hub に存在している必要があります。 新たに作成したエンティティのインスタンスにはメンバーの欠落がないので、そのインスタンスでのメンバーの遅延読み込みには意味がありません。 以下に示す遅延読み込みについては「enum」コードも参照してください。

enum MemberLoadOption {
    /**
     * Restricts getting members to members that are already loaded.
     */
    LocalOnly = 0,
    /**
     * Allows members to be lazy loaded when needed.
     * For performance reasons, this should be used wisely.
     */
    LazyLoading = 1
}

単一メンバーの遅延読み込み

プロパティを遅延読み込みして返す:

import { IProperty } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/base/property";

var titleProperty : IProperty = await entity.getPropertyAsync("Title", MemberLoadOption.LazyLoading);

プロパティを遅延読み込みして、その値を直接返す:

var title = await entity.getPropertyValueAsync("Title", MemberLoadOption.LazyLoading);

リレーションを遅延読み込みして返す:

import { IRelation } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/base/relation";

//RelationRole and MemberLoadOption are optional arguments in the function below and can be used separated by a comma after AssetTypeToAsset. 
var relation: IRelation = await entity.getRelationAsync("AssetTypeToAsset");

[!注] これら以外にも、プロパティとリレーションを読み込むためのオーバーロードがあります。 詳細な概要については、API のドキュメントを参照してください。

複数メンバーの遅延読み込み

1 回の呼び出しで複数のプロパティを遅延読み込みする:

import { PropertyLoadOption } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/property-load-option";

var propertyLoadOption = new PropertyLoadOption(["propertyName1", "propertyName2"]);
await entity.loadPropertiesAsync(propertyLoadOption);

1 回の呼び出しで複数のリレーションを遅延読み込みする:

import { RelationLoadOption } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/relation-load-option";

var relationLoadOption = new RelationLoadOption(["relationName1", "relationName2"]);
await entity.loadRelationsAsync(relationLoadOption);

1 回の呼び出しで複数のプロパティとリレーションを遅延読み込みする:

import { PropertyLoadOption } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/property-load-option";
import { RelationLoadOption } from "@sitecore/sc-contenthub-webclient-sdk/dist/contracts/querying/relation-load-option";

var propertyLoadOption = new PropertyLoadOption(["propertyName1", "propertyName2"]);
var relationLoadOption = new RelationLoadOption(["relationName1", "relationName2"]);

await entity.loadMembersAsync(propertyLoadOption, relationLoadOption);
この記事を改善するための提案がある場合は、 お知らせください!