我正在寻找一种方法,当缓存过期时,可以自动刷新缓存中的条目。
例如,example.com 的 TTL 为 60,如果它过期,我希望自动刷新它,以便当用户查询 example.com 时,新版本已经在缓存中。
这在 bind 中可行吗?
谢谢!
答案1
BIND
支持一种称为的技术prefetch
。使用预取 BIND 将自动刷新即将过期的条目。以下是预取的语法。
sudo vim /etc/bind/named.conf.options
...
options {
...
prefetch 2 9;
};
...
如您所见,它有两个数字,trigger
(此处为 2)和eligibility
(此处为 9)。这告诉 BIND,如果剩余 TTL 低于 2 秒,则刷新所有初始 TTL 大于 9 秒的条目的 DNS 条目。因此,它不会盲目刷新所有条目,而是只监控初始 TTL 大于资格的条目,一旦这些条目的剩余 TTL 低于触发值,它就会刷新它们。资格和触发的值以秒为单位。
因此,假设 example.com 的 TTL 为 60 秒(即获取记录时的 TTL),我想确保如果剩余 TTL 低于 10 秒,则应刷新条目。以下是我在配置文件中的预取选项。
prefetch 10 60
答案2
不,没有。缓存旨在自动“记录”首次访问的条目,以便以后更快地访问。“预缓存”条目不会像您描述的那样提高性能。