NCA が機能するためには、次のコンポーネントが必要です。
カーネルモジュール: ncakmod
Web サーバー: httpd
カーネルモジュール ncakmod は、Web ページのキャッシュをシステムメモリー内に保持します。このモジュールは、ソケットインタフェースを介して Web サーバー httpd と通信します。プロトコルファミリータイプは PF_NCA です。
また、カーネルモジュールは、すべての HTTP キャッシュヒットを記録するログ機能も備えています。NCA ロギングは、HTTP データをバイナリ形式でディスクに書き込みます。NCA には、バイナリログファイルを共通ログ形式 (CLF) に変換するユーティリティーが用意されています。
次の図に、通常のデータフローと、NCA が有効になっている場合のデータフローを示します。
図 2-1 NCA サービスのデータフロー
次に、クライアントと Web サーバー間の要求フローを示します。
クライアントから Web サーバーに対して HTTP 要求が発行されます。
ページがキャッシュ内にある場合は、カーネル内キャッシュの Web ページが返されます。
ページがキャッシュ内にない場合は、Web サーバーに要求が送信され、ページが取得または更新されます。
ページがキャッシュされているかどうかは、HTTP 応答で使用される HTTP プロトコルのセマンティクスによって異なります。そのあと、ページがクライアントに返されます。HTTP 要求ヘッダーに Pragma:No-cache が含まれている場合、ページはキャッシュされません。