0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Visualforceページの性能改善について

Last updated at Posted at 2020-10-21

Visualforceページの性能改善について、以下のことをまとめました。


  • SOQLについて、以下のことを注意しましょう。

      1. 計算処理(例:加算など)の実装優先順位:SOQL>Apex

      2. データのフィルター処理の実装優先順位:SOQL>Apex>Visualforce

      3. ループ内にDMLを発行しないこと。

  • データサイズについて、以下の方法でデータサイズをコントロールしましょう。

      1. フィルターの活用:SOQLにフィルター条件を追加することでデータを絞ることができる。

      2. 「sharing」キーワードの活用:Apexコントローラクラスに「sharing」キーワードを追加することで、該当ユーザの権限によるデータのみアクセスできる。アクセス権限がないデータがフィルターできる。

      3. ページングの活用:StandardSetControllerを継承して、ページングタグを利用することで、一回ロードされるデータが制御できる

  • Visualforceページ内のロジックを減らしましょう。

      Visualforceページ内に複雑なロジックがある場合、有効なGETTERメソッドを活用して、その分のロジックをApex側に移動すること。

  • Lazy Loadingを活用しましょう

      大きい画面に対し、全画面のリフレッシュより、非同期処理を利用して、画面の一部のみ更新すること。

  • ビューステートの最適化

      1. 継続的に利用しないプロパティに対し、「transient」キーワードを宣言することで、ページのビューステートには含まれないから、ビューステートのサイズが縮小される。要求中に何度も再計算するには非常に大きなシステムリソースを使用する。
        ※例:画面から渡される画像情報を格納する変数がtransientで宣言する。

      2. ビューステートの利用について、基本的にApexコントローラクラスに検索されるデータですので、SOQLになるべく明確な検索条件を追加して、ビューステートのサイズが縮小される。

      3. 大量データを画面に表示される場合、ページングを利用して、1回ロードされるデータ量を減らしてビューステートのサイズが縮小される。

      4. 1つのページに複数のFORMを利用するより、<Apex:actionRegion>利用すること。
        <apex:actionRegion>コンポーネントは要求時にサーバが処理するコンポーネントのみを定義する。要求が完了したときに再表示されるページの領域は定義しない。

        ※<Apex:actionRegion>の参照リンク

最後に、以下のリンクにVisualforceの最適化について、詳しく紹介されるので、ご参照。
Visualforce のパフォーマンスを最適化するベストプラクティス

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?