Squid 外部 ACL キャッシュ: ヘルパーが毎回呼ばれない理由
Squid の外部 ACL ヘルパーは、永続プロセス、判断キャッシュキー、承認の鮮度に関する明示的な要件を中心に設計します。
1 回のリクエストをログに記録してから沈黙するヘルパーは正常な場合があります。Squid はヘルパーに別のクエリを送らずに、キャッシュされた外部 ACL の結果でルールを評価することがあります。
まず再利用可能な判断を定義します。「このアカウントはプロキシを使用できるか」は「このアカウントはこの宛先に到達できるか」とは異なる入力が必要です。拡張外部 ACL 形式がキャッシュキーを形成します。ヘルパーがユーザー名と宛先で判断するのに、キーがユーザー名だけを含む場合、キャッシュされた承認が意図より広く適用される可能性があります。回答を変える入力はすべて含め、同等の判断を細分化するだけの詳細は避けてください。
次に鮮度を選びます。正の ttl と negative_ttl は一致・不一致の結果を制御し、grace はエントリの期限切れ前に更新を開始できます。失効したアカウントのキャッシュ承認が後の判断に影響してよい期間を決めます。これらの設定はいずれも、確立済みの CONNECT トンネルをバイト単位や内部 HTTPS リクエストごとに再承認するものではありません。ヘルパーがトラフィック割り当てを強制する場合、残高が変わった後も許可された転送が続くことがあります。
ヘルパーは永続的なプロトコル参加者であり、リクエストごとに新しいスクリプトプロセスとは限りません。連続するクエリ行に備えて待機させ、各応答を速やかに送ります。診断は別チャネルに置きます。並行性が有効な場合は、対応する渡されたチャネル識別子を返します。
最後に、低速・利用不可・内部エラーの結果を定義し、周囲の ACL 順序がそれらを生み出すようにします。再利用可能な回答の特異性と許容される古さの両方がアクセス要件と一致したとき、設計は完了です。