Lightning データサービス
Lightning データサービスに読み込まれたレコードはキャッシュされ、コンポーネント間で共有されます。1 つのページが同じレコードを表示するコンポーネントで構成されている場合、すべてのコンポーネントは、同じバージョンのレコードを表示します。同じレコードにアクセスするコンポーネントでは、パフォーマンスが大幅に改善されます。これはレコードが、それを使用するコンポーネントの数に関係なく 1 回しか読み込まれないためです。
Lightning Web コンポーネントで、Lightning データサービス上に構築されている次のテクノロジを使用してデータに対する操作を実行したり、メタデータにアクセスしたりします。
- 基本コンポーネントの
lightning-record-edit-form
、lightning-record-form
、およびlightning-record-view-form
lightning/ui*Api
モジュールのワイヤアダプタおよび関数- GraphQL API ワイヤアダプタ
Lightning データサービスは、ユーザインターフェース API でサポートされているすべてのカスタムオブジェクトと標準オブジェクトをサポートします。外部オブジェクト、個人取引先、カスタムメタデータ型はサポートされていません。Lightning データサービスでは、API 使用状況コールは発生しませんが、返されるレコード数などの一般的な制限の対象となります。
データは Lightning データサービスによって管理されます。レコードへの変更は、Lightning データサービス上に構築されたすべてのテクノロジに反映されます。一方、Apex のデータは管理されないため、データを更新する必要があります。
Lightning データサービスがレコードやサポートされるデータまたはメタデータへの変更を検出した場合、関連する @wire
アダプタを使用しているすべてのコンポーネントが新しい値を受け取ります。検出は以下の場合にトリガされます。
- Lightning Web コンポーネントがレコードを変更した。
- LDS のキャッシュエントリが期限切れとなり、Lightning Web コンポーネントの
@wire
が読み取りをトリガした。キャッシュエントリと Lightning Web コンポーネントは、同じユーザの同じブラウザとアプリケーション (Lightning Experience など) に存在する必要があります。
Lightning データサービスは、次のような方法でコードのパフォーマンスを高めます。
- レコードデータを漸進的に読み込む。
- 結果をクライアントでキャッシュする。
- 連動関係にある Salesforce データとメタデータが変更された時点でキャッシュエントリを無効にする。
- リクエストの一括処理と重複排除によってサーバコールを最適化する。
Lightning データサービスは、パフォーマンスの向上のために、ワイヤアダプタを介して読み込まれたレコードデータのクライアント側のキャッシュを保持します。このキャッシュから読み込む方が、サーバレコードのデータを要求するよりも高速です。キャッシュの有効期限が切れた後に要求が行われた場合、Lightning データサービスはサーバのレコードデータを再要求します。ただし、キャッシュの有効期限が切れる前でも、更新されたレコードデータを取得できます。キャッシュの有効期限は、Lightning データサービスの継続的な改善の一環として変更される場合があります。
また、Lightning データサービスは、デュラブルストアにキャッシュされるオブジェクトおよびレイアウトメタデータの個別のタイムアウトを保持します。カスタムオブジェクトのレコードページのレイアウトを変更しても、レイアウトの変更はすぐには表示されません。レコードページの更新後のレイアウトは、ページを再読み込みしてもタイムアウトするまで表示されません。レイアウトの変更をすぐに表示するには、ログアウトして、ログインし直します。デュラブルキャッシュは、安全なブラウザキャッシュが有効化されている (デフォルト) 組織で使用できます。
Lightning データサービスはユーザインターフェース API 上に構築されています。UI API は、Salesforce が Lightning Experience、Salesforce for Android、Salesforce for iOS を構築するのに使用する公開 Salesforce API です。その名前が示すように、UI API は Salesforce UI の構築を容易にするように設計されています。
UI API は、データとメタデータを 1 つの応答で提供します。応答は、Salesforce システム管理者によって行われた組織に対するレイアウトの変更と一致します。たとえば、システム管理者がレイアウトから項目を削除した場合は、レイアウトメタデータに対するリクエストへの応答には、その項目は含まれません。
UI API 応答には、CRUD アクセス、項目レベルのセキュリティ設定、共有設定も反映されます。つまり、このフレームワークでは、ユーザが CRUD アクセス権および FLS 表示権限を持つレコードと項目のみが表示されます。これらのすべての機能は、Lightning データサービスワイヤアダプタ (lightning/ui*Api
) とその上に構築されたコンポーネントを使用することで利用できます。
関連トピック