JavaServer Faces Client コンポーネントを使うと、 応答性の高い Web ページを作成することができるので、 ブラウザーとサーバーとのやりとりを減らすことができます。 Faces Client コンポーネントは、クライアント・サイド・データ・キャッシングと 呼ばれる技法を使用します。 これによって、Faces Client コンポーネントは、サーバー上のデータにアクセスする代わりに、 Web ページ中のデータにアクセスできるようになります。 結果として、Web ページが比較的長く存続し、素早く応答します。
例えば、ユーザーは 100 個の製品のカタログを走査検索しているとします。Faces Client コンポーネントを使用して、 100 個の製品とデータ・グリッドと呼ばれる表を含む Web ページを作成できます。この表は、1 度に 10 個の製品を表示することができます。ページが最初にアクセスされたとき、そのページには 100 個すべての製品の全体のデータ・セットが含まれますが、 サブセットである 10 個の製品のみが表示されます。 ユーザーが次の Web ページに進むと、データ・グリッドは、 ページの最新表示やサーバーへ飛ぶことを要求しないで、 クライアント・キャッシュにあるデータから、 次の 10 個の製品を表示します。 Faces Client コンポーネントは、JavaScript™ 機能を使用して、表示されたデータをコントロールします。
Faces Client コンポーネントのグラフおよび Web サービス・コンポーネントは、 JavaScript™、HTML、および Macromedia Flash をベースにしています。 その他のブラウザーのプラグインは必要ありません。データ・グリッド、データ・ツリー、 グラフ、および Web サービス の 4 つの Faces Client コンポーネントは、特にクライアント・データとともに作動します。 Faces Client コンポーネント同士は相互に作用できるので、 いくつかの Faces Client コンポーネントを同じページに配置して コンポーネント同士を作用させるイベントを定義することができます。例えば、アカウントのリストを、データ・グリッドにリンクさせたツリーに表示することができます。 ユーザーがツリー内のあるアカウントを強調表示にすると、データ・グリッドが、 そのアカウントのトランザクションをデータ・グリッドで表示します。 ユーザーが別のアカウントを選択すると、データ・グリッドは、選択されたアカウントに対応するトランザクションのセットを、サーバーに戻るトリップや ページの再ロードを行わずに表示します。
ほとんどの Web ページでは、データが HTML コントロールにマージされます。 現在表示されているページにないデータをユーザーが見たいときは、ブラウザーがサーバーに要求を送信します。 サーバーはデータをリトリーブして、そのデータを HTML とマージしてから、新しいページをブラウザーに送信します。 Faces Client Web ページでは、データはコントロールとは別に保守されます。 データは、コントロールがバインドできるような正式なモデルに編成されます。 データは、各 Web ページの上部に JavaScript オブジェクトとして保管されます。 この設計では、いくつかのコントロールを同じデータにバインドすることができます。 ユーザーは、このデータの中の異なる部分 (例えば、異なるアカウントなど) を、 サーバーへの往復を行わずに見ることができます。