この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ビューステートの最適化

Visualforce ページのビューステートを維持するために、Lightning Platform プラットフォームは、コンポーネントの状態、項目値、およびコントローラーを非表示のフォーム要素に暗号化文字列として格納します。ビューステートには 170KB の制限があります。ビューステートが大きいと、各要求に必要な処理時間 (シリアライゼーションとデシリアライゼーションの時間、暗号化と復号化の時間などを含む) が長くなります。ビューステートのサイズを縮小すると、ページをより迅速に読み込むことができ、ページの停止頻度が少なくなります。

Visualforce ページのビューステートを調べるには、「開発モード」および「開発モードでビューステートを表示」ユーザー権限を設定します。開発モードフッターの [View State (ビューステート)] タブには、ビューステートの分布が表示されます。各ページのビューステートサイズを把握し、大量のデータでテストして、リリース後に発生する可能性がある問題を回避します。

ビューステートを削減する方法は、次のとおりです。

  • 絞り込みやページネーションを使用して、状態を必要とするデータを減らす。
  • インスタンス変数が現在の要求にのみ役立つ場合は、transient キーワードを使用してそのインスタンス変数を宣言する。transient 変数はビューステートに含まれません。
  • Visualforce ページに関連するデータのみを返すように SOQL コールを調整する。
  • ページで使用されているコンポーネントの数を減らす。
  • データを参照のみにする。<apex:inputField> コンポーネントの代わりに <apex:outputText> コンポーネントを使用する。
  • JavaScript Remoting を使用する。<apex:actionFunction> コンポーネントとは異なり、JavaScript Remoting では <apex:form> コンポーネントは必要ありません。JavaScript Remoting でページのビューステート全体を削減することはできませんが、多くの場合、ビューステートを転送、シリアライズ、およびデシリアライズすることなくページのパフォーマンスを向上させることができます。このトレードオフとして、reRender 属性を失い、コールバックを処理する追加の JavaScript コードが必要になります。