キャッシュプロキシの背後に集積サーバーを設定するには最低限の構成が必要です。カタログ属性ファイル (カタログ属性ファイルに対するキャッシュの考慮事項を参照) およびリポジトリの検索結果 (検索に対するキャッシュの考慮事項を参照) を除き、提供されるすべてのファイルは一意であるため、必要な場合に応じて無制限にキャッシュしても安全です。また、キャッシュ内のファイルが誤って無効にならないようにするために、すべての集積応答には適切な HTTP ヘッダーが含まれています。
htcacheclean コマンドを使用したキャッシュサイズの制御など、Apache をキャッシュプロキシとして構成する方法の詳細については、Apache のキャッシュのガイドを参照してください。htcacheclean を実行するための定期的またはスケジュールされている SMF サービスを作成する方法については、Oracle Solaris 11.3 でのシステムサービスの開発を参照してください。
CacheRoot ディレクティブを使用して、キャッシュされたファイルを格納するディレクトリを指定します。指定されたディレクトリが Apache プロセスによって書き込みできることを確認してください。Apache がこのディレクトリに書き込みできない場合、明示的なエラーメッセージは出力されません。
CacheRoot /tank/proxycache
Apache では、特定のディレクトリについてのキャッシュを有効にできます。次のディレクティブに示すように、リポジトリサーバーはおそらくサーバーのすべてのコンテンツをキャッシュすることが必要になります。
CacheEnable disk /
CacheMaxFileSize ディレクティブを使用して、キャッシュする単一のファイルの最大サイズを設定します。Apache のデフォルトである 1M バイトは、ほとんどのリポジトリで小さすぎる可能性があります。次のディレクティブでは、キャッシュするファイルの最大サイズを 1G バイトに設定します。
CacheMaxFileSize 1000000000
基礎となるファイルシステムについて最適なパフォーマンスを得るには、ディスク上のキャッシュのディレクトリ構造を調節します。ZFS データセットでは、ディレクトリレベルが複数ある方が、1 つのディレクトリ内のファイル数よりもパフォーマンスに影響を及ぼします。したがって、ディレクトリレベルを 1 つにして、各ディレクトリ内に多数のファイルを持たせるように構成します。ディレクトリ構造を制御するには CacheDirLevels および CacheDirLength ディレクティブを使用します。CacheDirLevels を 1 に設定します。CacheDirLength の値は、ディレクトリ数とディレクトリあたりのファイル数がうまく均衡するように設定します。次のように値を 2 に設定すると、4096 個のディレクトリが生成されます。詳細については、Apache の Disk-based Caching のドキュメントを参照してください。
CacheDirLevels 1 CacheDirLength 2
リポジトリカタログ属性ファイル (catalog.attrs) には、リポジトリカタログの現行ステータスが含まれています。このファイルは、キャッシュを正当化するほどの十分な大きさになることがあります。ただし、バックエンドリポジトリのカタログが変更されると、このファイルは無効になります。次の 2 つの方法のいずれかを使用して、この問題に対処することができます。
このファイルをキャッシュしません。この対処方法は、追加トラフィックが重要な考慮事項とならない高帯域環境においてリポジトリサーバーが実行する場合に最適です。次に示す httpd.conf ファイルの一部は、catalog.attrs ファイルをキャッシュしないことを指定する方法を示しています。
<LocationMatch ".*/catalog.attrs"> Header set Cache-Control no-cache </LocationMatch>
バックエンドリポジトリのカタログが更新されるたびにこのファイルをキャッシュから除去します。
パッケージリポジトリを検索すると、要求に基づくカスタム応答が生成されます。したがって、検索結果はキャッシュにあまり適していません。集積サーバーは、検索結果がキャッシュ内で無効にならないように適切な HTTP ヘッダーを設定します。ただし、キャッシュ作成からの帯域幅の節約量は小さいことが予想されます。次に示す httpd.conf ファイルの一部は、検索結果をキャッシュしないように指定する方法を示しています。
<LocationMatch ".*/search/\d/.*"> Header set Cache-Control no-cache </LocationMatch>