キャッシュの有効期限が切れた場合に、キャッシュ内のエントリを自動的に更新する方法を探しています。
たとえば、example.comのTTLは60ですが、期限切れになった場合は自動的に更新して、ユーザーがexample.comにクエリを実行したときに、新しいバージョンが既にキャッシュにあるようにします。
これはバインド内で可能ですか?
ありがとう!
いいえ、ありません。キャッシュは、エントリが初めてアクセスされたときに自動的に「記録」して、後でアクセスを高速化するように設計されています。あなたが説明しているように、「事前キャッシュ」エントリにパフォーマンスの向上はありません。
BIND
は、prefetch
と呼ばれる手法をサポートしています。プリフェッチBINDを使用すると、期限切れが近づいているエントリが自動的に更新されます。以下は、プリフェッチの構文です。
Sudo vim /etc/bind/named.conf.options
...
options {
...
prefetch 2 9;
};
...
ご覧のとおり、これにはtrigger
(ここでは2)とeligibility
(ここでは9)の2つの数字があります。これは、残りのTTLが2秒を下回った場合、最初のTTLが9秒を超えたすべてのエントリのDNSエントリを更新するようにBINDに指示します。したがって、更新されません。すべてのエントリを盲目的に更新します。代わりに、最初のTTLが適格性よりも大きい)エントリのみを監視し、これらのエントリの残りのTTLがトリガーを下回ると値はそれらを更新します。適格性とトリガーの値は秒単位です。
したがって、example.comのTTLが60秒(つまり、レコードがフェッチされたときはTTL))であるとすると、残りの= TTL 10秒を下回った場合、エントリを更新する必要があります。以下は、構成ファイルのプリフェッチオプションです。
prefetch 10 60