軽量なフォームはパフォーマンスが良い:リソースを圧縮する
HTML5 フォームには複数の外部リソース(画像、JavaScript、CSS ファイルなど)を含めることができます。外部リソースは、ブラウザーがフォームを要求するたびにネットワーク経由で送信されます。ネットワーク経由での送信にかかる時間は、ファイルのサイズに正比例します。
したがって、フォームのパフォーマンスを向上させるには、外部リソースのサイズを減らし、どうしても必要なリソースのみを使用することをお勧めします。XFA フォームに対して以下の最適化を行うことにより、フォームの外部リソースのサイズを減らすことができます。
- 圧縮された画像を使用します。フォームをレンダリングするのに必要なネットワークアクティビティとメモリ量が減少します。これにより、フォームの読み込み時間が大幅に短縮されます。
- AEM Configuration Manager(Day CQ HTML Library Manager)の縮小オプションを使用して、JavaScript と CSS ファイルを圧縮します。詳しくは、OSGi 設定を参照してください。
- Web 圧縮を有効にします。フォームから送信されるリクエストと応答のサイズが減少します。詳しくは、AEM Forms サーバーのパフォーマンス調整を参照してください。
興味を維持する:必要なフィールドのみを表示する
1 つの HTML5 フォームが数百ページに達することもあります。多数のフィールドを含むフォームは、ブラウザーでの読み込みが遅くなります。XFA フォームに対して以下の最適化を行うことにより、多数のフィールドとページを含むフォームを最適化できます。
- 大規模なフォームを複数のフォームに分割できるかどうか判定します。フォームセットを使用して小規模なフォームをグループ化し、1 つの単位として提示することもできます。フォームセットでは、必要なフォームのみが読み込まれます。さらにフォームセットでは、異なるフォーム内の共通するフィールドでデータバインディングが共有されるように設定することができます。データバインディングを使用すると、ユーザーが共通する情報を一度入力すれば、その後のフォームでは情報が自動的に入力されるので、パフォーマンスの大幅な向上につながります。フォームセットについて詳しくは、AEM Forms におけるフォームセットを参照してください。
- セクションを分割し、各セクションを異なるページに移動することを検討します。HTML5 フォームでは、ページスクロールのリクエスト時に各ページが動的に読み込まれます。スクロールされたページ(現在表示されているページとそれ以前に表示されたページ)のみがメモリに格納され、残りのページはオンデマンドで読み込まれます。このため、セクションを分割して独立したページに移動することにより、フォームの読み込みにかかる時間が短縮されます。フォームの先頭ページをランディングページとして使用することもできます。これは、本の目次(TOC)に似ています。フォームのランディングページには、フォームの他のセクションへのリンクのみを含めます。これにより、フォームの先頭ページの読み込み時間が大幅に短縮され、ユーザーエクスペリエンスが向上します。
- 条件付きのセクションをデフォルトで表示しないようにします。特定の条件が満たされたときのみ、これらのセクションを表示します。これは、DOM のサイズを最小限に抑えるのに役立ちます。タブナビゲーションを使用して、一度に 1 つのセクションのみを表示することもできます。
ページの数を減らして最適化する
HTML5 フォームには、データ駆動型のフィールド(テーブルやサブフォーム)を含めることができます。これらのフィールドを使用すると、実行時にフォームのサイズが増大します。例えば、HTML5 フォーム内のデータ駆動型テーブルは数千行に達する場合があります。このようなテーブルは、レイアウトの悪化やパフォーマンスの低下の原因になります。以下のように最適化すると、データ駆動型のフィールドを含む HTML5 フォームの読み込み時間を短縮できます。
-
XFA スクリプティングを使用してページによるナビゲーションを実現し、データ駆動型のフィールド(テーブルやサブフォーム)を表示します。ページによるナビゲーションでは、1 つのページに特定のデータのみが表示されます。ブラウザーのペイント操作が一度に表示されるフィールドに限定されるので、フォームのナビゲーションが簡単になります。また、モバイルデバイスのユーザーはデータのサブセットにのみ関心を持っています。優れたユーザーエクスペリエンスを提供できるようになり、必要なデータを読み込むのにかかる時間も短縮されます。1 つの対策で 2 重の効果が得られます。また、ページナビゲーションはそのままでは使用できないことに注意してください。ページによるナビゲーションは、XFA スクリプティングを使用して作成できます。
-
複数の読み取り専用列を 1 つの列にまとめることができるかどうかを判断します。これにより、フォームの表示に必要なメモリが減少します。また、ユーザーの入力を必要としない列を表示しないようにします。
-
上述の推奨事項を実践しても十分に改善されない場合は、データ駆動型のフォームをフォームセットに分割できるかどうかを判断します。例えば、テーブルが 1000 行を超える場合は、100 行ずつ異なるフォームに移動します。フォームの読み込み時間とパフォーマンスを改善する効果があります。フォームセットは、すべてのフォームに対して 1 つの統合された送信 XML を生成する点にも注目してください。各フォームのデータを区別するには、異なるデータルートを使用します。詳しくは、AEM Forms におけるフォームセットを参照してください。
レコードのドキュメント(DOR)を 2 つ保持する
XFA フォームには、レコードのドキュメント(DOR)専用のセクションを数多く含めることができます。このようなフォームのノードの数を減らし、パフォーマンスを向上させるため、フォームのコピーを複数保持することができます。1 つはフォームに記入するためのコピーで、もう 1 つはサーバー上でレコードのドキュメントを生成するためのコピーです。XFA フォームに記入するためのコピーには、データを取得するためにのみ必要なフィールドが表示されます。レコードのドキュメントを生成する XFA フォームには、フォームの印刷出力にのみ必要なフィールドを保持します。この推奨事項を採用する場合は、事前にパフォーマンスの向上とメンテナンスのオーバーヘッドを評価してください。