Performance Flashcards
Cosmic Solutionsの開発者は、営業ユーザがボタンをクリックするとSOAPベースの外部システムにコールアウトを送信するVisualforceページを作成しました。コールアウトは、ユーザがページ上で選択した製品に関する情報を送信します。外部システムは情報を処理し、’Processed_Response__c’ というカスタム・オブジェクトに格納されるレスポンスを送信する必要があります。販売ユーザはこのカスタム・オブジェクトのレコードにアクセスする必要はありません。外部システムが要求を処理するのにかなりの時間を必要とし、ユーザが応答を待つ必要がない場合、この要件を満たすために開発者が行うべきことは次のうちどれでしょうか。
答えを1つ選びなさい。
A. ページのカスタムコントローラでContinuationクラスを使用し、長時間コールアウトを行います。
B. ページのカスタムコントローラで @RemoteAction アノテーションを使用してコールアウトを作成する。
C. SOAP コールアウトを実行し、レスポンスを処理する future メソッドを使用する。
D. コントローラの拡張機能を使用して、ページからの非同期コールアウトを行います。
C. SOAP コールアウトを実行し、レスポンスを処理する future メソッドを使用する。
このシナリオでは、非同期コールアウトを使用して、リソースが利用可能なときに外部シス テムによって製品情報が処理されるようにする必要がある。ユーザーはレスポンスを待つ必要がないので、フューチャーメソッドを使用してコールアウトを実行し、別のトランザクションでレスポンスを処理することができる。これによってユーザーは、リクエストが送信された後、あるいはリクエストが処理されているときに、ページや他の場所で他のタスクを実行し続けることができます。
継続クラスも要件を満たすことができますが、通常のコールアウトを実行し、@future アノテーションでアノテーションされたメソッドでレスポンスを一括処理するだけなので、特に継続フレームワークを利用する必要はありません。RemoteActionは、JavaScript経由で呼び出す必要があるApexメソッドのサポートを提供するために使用されます。コントローラ拡張は、自動的に非同期コールアウトを行うわけではありません。
ある開発者が、「open」という名前のブール値属性を使用する Aura コンポーネントを作成しています。この属性の値が true の場合、モーダルダイアログボックスが表示されます。ユーザーはページ上の 2 つのボタンを操作することで、モーダルを表示できます。また、ユーザがページ上で特定のアクションを実行すると、自動的に表示されるようにします。彼は、モーダルダイアログボックスを自動的に開いたり閉じたりするために、クライアント側コントローラのコード量を減らし、コードの再利用を改善したいと考えています。このユースケースに利用できるアプローチはどれか。
答えを1つ選びなさい。
A. コンポーネントのヘルパーファイルに、モーダルを自動的に表示したり閉じたりするための共通メソッドを2つ定義する。
B. モーダルを自動的に表示および非表示にする新しいネストされた Aura コンポーネントを定義します。
C. モーダルを自動的に表示および閉じるために、コンポーネントのヘルパーファイルに 3 つの共通メソッドを定義します。
D. モーダルを自動的に表示および閉じるために、コンポーネントのコントローラーファイルに 2 つの共通メソッドを定義します。
A. コンポーネントのヘルパーファイルに、モーダルを自動的に表示したり閉じたりするための共通メソッドを2つ定義する。
このユースケースのために、helper.jsファイルに2つの一般的なヘルパーメソッドを作成することができます。ひとつは ‘open’ 属性の値を ‘true’ に設定するコードです。もうひとつのメソッドは、その値を ‘false’ に設定します。これらのメソッドを controller.js ファイルから呼び出すことで、追加のコードを記述することなく、モーダルダイアログボックスを開いたり閉じたりすることができます。以下の2つのメソッドは、ヘルパーファイルで定義することができます:
showModal: function(cmp) { cmp.set('v.open', true); }, hideModal: function(cmp) { cmp.set('v.open', false); }
ある開発者が、「遅延ロード」と呼ばれるテクニックを使用して、大量のデータをロードするVisualforceページのパフォーマンスを改善しようとしています。このテクニックを使用する際に考慮すべきことは、次のうちどれでしょうか?
答えを2つ選んでください。
A. カスタムコンポーネントを作成し、ユーザのアクションに応じてデータの表示/非表示を切り替えることができます。
B. JavaScript関数は、データの遅延ロードには対応していません。
C. rerender’ 属性を使用すると、ページ全体を更新せずにコンポーネントを更新できます。
D. 遅延読み込みは、ユーザーによってアクションが実行されるまで、ページの読み込みを完全に遅らせます。
A. カスタムコンポーネントを作成し、ユーザのアクションに応じてデータの表示/非表示を切り替えることができます。
C. rerender’ 属性を使用すると、ページ全体を更新せずにコンポーネントを更新できます。
遅延ロードとは、Visualforce ページの重要な機能を最初にロードし、残りを短時間またはユーザがアクションを実行するまで遅延させることを指します。また、’rerender’ 属性を使用すると、ページ全体を更新せずにコンポーネントを更新できます。JavaScript Remoting を使用すると、JavaScript を使用してコントローラ内の関数を呼び出し、データを取得することができます。
ある開発者が、Salesforce アプリケーションで使用される SOQL クエリを改善して、パフォーマンスを最大化するよう依頼されました。クエリのパフォーマンスを向上させる最善の方法は、クエリが選択的であることを確認することです。クエリが選択的であるかどうかを評価および判断するために開発者が使用できるのは、次のうちどれでしょうか (たとえば、システム定義のしきい値と照合するなど)。
A. Force.com SOQL Optimizer
B. Query Editor Tool
C. Force.com Query Optimizer
D. Query Plan Tool
D. Query Plan Tool
Query Plan’ツールを使用すると、SOQLクエリー・フィルターが選択的であるかどうか、例えばインデックスを使用しているかどうか、システムで定義されたしきい値を超えていないかどうか、その他の要素を判断することができます。SOQLクエリを評価するには、Developer ConsoleのQuery Editorパネルからクエリを入力し、’Query Plan’ボタンをクリックします。このボタンがない場合は、Help|Preferences|Enable Query Plan をクリックして有効にすることができます。
Force.com Query OptimizerはSOQLクエリとデータベースの間に位置するエンジンです。バックグラウンドで統計情報を収集し、最も最適化された SQL クエリを自動的に選択して、Salesforce が使用する Oracle データベースからデータを取得します。Query Editor」ツールは、Developer Console で SOQL ステートメントを実行するために使用します。Force.com SOQL Optimizer」は存在しません。
コズミック・ソリューションズの様々なユーザーから、ライトニング・エクスペリエンスのパフォーマンスが遅いという苦情が寄せられている。開発者は、パフォーマンスを改善するための対策を講じることにしました。CDN(コンテンツデリバリーネットワーク)を有効にすることで、Lightning Experienceの読み込みを高速化するにはどうすればよいでしょうか?
答えを3つ選んでください。
A. CDNを有効にすると、Lightningコンポーネントフレームワークの静的コンテンツのロード時間が改善されます。
B. CDNは、静的コンテンツのキャッシュバージョンを複数の地理的ロケーションに保存します。
C. CDN を有効にすると、オルグのデータとメタデータが CDN に分散されます。
D. 静的なJavaScriptとCSSは、Lightning ComponentフレームワークのCDNを通じて配信される。
E. CDN を有効にしても、ファイルを提供するソースドメインは変更されない。
A. CDNを有効にすると、Lightningコンポーネントフレームワークの静的コンテンツのロード時間が改善されます。
B. CDNは、静的コンテンツのキャッシュバージョンを複数の地理的ロケーションに保存します。
D. 静的なJavaScriptとCSSは、Lightning ComponentフレームワークのCDNを通じて配信される。
Lightning Componentフレームワークの静的コンテンツのロード時間を改善するために、CDN(Content Delivery Network)を有効にすることができます。一般的にページのロード時間は短縮されますが、ファイルを提供するソースドメインも変更されます。静的コンテンツのキャッシュされたバージョンは、複数の地理的な場所に保存されます。静的なJavaScriptとCSSは、Lightning ComponentフレームワークのCDNを通じて配信されます。しかし、オルグのデータやメタデータをCDNで配信することはない。
コスミックソリューションズは、取引先の重要な詳細情報と、その取引先の直近 30 件のケース、およびそれらのケースの Chatter フィードを表示する Visualforce ページを開発しました。データ量が多いため、ケースの Chatter フィードはページ読み込み時にデフォルトで折りたたまれており、ユーザーはケース番号をクリックしてフィードを展開することができます。多くのフィードアクティビティがあるケースの取引先を表示する際、ユーザは長いロード時間を報告しています。ユーザーのページ読み込み体験を改善するために、開発者は何ができますか?
答えを2つ選んでください。
A. Chatter データを @future メソッド内で遅延ロードする。
B. JavaScript リモーティングを使用して、ユーザが Case を展開したときに Chatter フィードを取得します。
C. インナークエリを含む単一の SOQL 文を使用して、取引先とその Case のフィールドをクエリします。
D. SOQL 集約関数を使用して、クエリパフォーマンスを高速化する。
B. JavaScript リモーティングを使用して、ユーザが Case を展開したときに Chatter フィードを取得します。
C. インナークエリを含む単一の SOQL 文を使用して、取引先とその Case のフィールドをクエリします。
Chatter データは最も量が多く、取得に最も時間がかかるため、ユーザ体験を向上させるために遅延ロードされるべきです。一部のユーザが、取引先の詳細や高レベルのケース詳細のみを見る必要がある場合は、ページロード中にそのデータを取得し、インナークエリを使用してアカウントとケースの両方の詳細を取得することで、さらに最適化できます。ユーザがケースを展開すると、JavaScript リモーティングは、ページ上のすべてのケースのすべての Chatter フィード項目を取得するのではなく、そのケースだけに特化した Chatter データを取得できます。
Visualforce コントローラから @future メソッドをコールしても、データをコントローラに返すことはできません。たとえできたとしても、大量のリクエストを受け取ることになり、レスポンスタイムが遅くなるため、このシナリオには適していません。その代わりに、Chatter データを遅延ロードするメソッドには @RemoteAction のアノテーションをつけましょう。
生のデータをユーザにレンダリングする必要があるため、集計関数はここでは役に立ちません。
ある開発者が Lightning Experience でページのパフォーマンスを分析しています。このユースケースで Lightning Usage アプリが提供する機能は次のうちどれですか?
答えを 2 つ選んでください。
A. ページ」セクションには、Lightning Experience で上位に表示されているページのパフォーマンスが表示されます。
B. ページパフォーマンス」ペインには、ページのロード時間が表示されます。
C. ブラウザ別の平均ページ読み込み時間が表示されます。
D. 選択したページの過去90日間のページロード時間が表示されます。
A. ページ」セクションには、Lightning Experience で上位に表示されているページのパフォーマンスが表示されます。
C. ブラウザ別の平均ページ読み込み時間が表示されます。
Lightning Usage アプリケー ションは、Lightning Experience のアプリ ランチャーからアクセスできます。このアプリは、ページ ロード時間または経験ページ時間(EPT)の観点から Lightning ページのパフォーマンスを表示します。ページ」セクションには、トップ表示ページのパフォーマンスと単一ページのパフォーマンスが表示されます。選択したページのロード時間は、過去30日間分表示されます。パフォーマンス」ペインには、アプリの「ブラウザ」セクションと「ページ」セクションの両方でページのロード時間が表示されます。
ある開発者が、パフォーマンスを最適化し、ユーザエクスペリエンスを向上させるために、特定の Visualforce ページに変更を加えるタスクを受けています。ビュー状態の最適化によってページのパフォーマンスを向上させるには、次のどの手順を実行すればよいですか。
答えを3つ選んでください。
A. 複数の入力フォームを使用して、ビュー状態の管理を最適化する。
B. SOQLクエリとページネーションでフィルタを使用してデータを制限する
C. 非アクションコンポーネントを使用してアクションを呼び出す
D. transient変数を使用してビュー状態のサイズを縮小する
E. 外部オブジェクトを使用して、大量の読み取り専用データを格納する。
B. SOQLクエリとページネーションでフィルタを使用してデータを制限する
C. 非アクションコンポーネントを使用してアクションを呼び出す
D. transient変数を使用してビュー状態のサイズを縮小する
transientとして宣言されたインスタンス変数は、ビュー状態の一部として転送されないため、それを使用することでビュー状態全体のサイズを小さくすることができます。複数の入力フォームは避けることが推奨されますが、ビュー状態のサイズには関係ありません。SOQLクエリは、必要なデータのみを取得するように絞り込むことができ、ページ分割を使用して状態を必要とするデータを減らすことができます。大量の読み取り専用データを保存するには、カスタムオブジェクトやカスタム設定を使用する必要があります。ビューをステートレスにするには、’apex:commandLink’や’apex:commandButton’の代わりに’apex:outputLink’のような非アクションコンポーネントを使用する必要があります。