Я ищу способ автоматического обновления записей в кэше, если срок его действия истек.
Например, у 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 обновить записи DNS для всех записей, начальный TTL которых был больше 9 секунд, если оставшийся TTL падает ниже 2 секунд. Таким образом, он не будет слепо обновлять все записи, вместо этого он будет отслеживать только записи, начальный TTL которых больше, чем право на доступность, и как только оставшийся TTL для этих записей падает ниже значения триггера, он обновит их. Значения права на доступность и триггера указаны в секундах.
Итак, предположим, что у example.com TTL составляет 60 секунд (т.е. TTL, когда запись была извлечена), я хочу гарантировать, что если оставшийся TTL упадет ниже 10 секунд, запись должна быть обновлена. Ниже будет мой параметр предварительной выборки в файле конфигурации.
prefetch 10 60
Дальнейшее чтение:https://kb.isc.org/article/AA-01122/0
решение2
Нет, не существует. Кэш разработан для автоматической "записи" записей при первом доступе к ним для более быстрого доступа в дальнейшем. Нет никакого прироста производительности при "предварительном кэшировании" записей, как вы описываете.