我正在尋找一種方法,在快取過期時自動刷新快取中的條目。
例如,example.com 的 TTL 為 60,我希望在過期時自動刷新它,以便當用戶查詢 example.com 時,快取中已存在新版本。
這在綁定內可能嗎?
謝謝!
答案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
不,沒有。快取旨在在第一次存取條目時自動「記錄」條目,以便以後更快存取。正如您所描述的那樣,“預先緩存”條目沒有任何效能提升。