跳转至

高性能缓存机制

缓存是 Load Ants 实现高性能、低延迟 DNS 解析的"秘密武器"。启用缓存后,Load Ants 会将一度查询过的 DNS 记录在本地保存一小段时间,从而大幅提升重复访问的响应速度。

一个类比:大脑的"短期记忆"

你可以将 Load Ants 的缓存机制想象成我们大脑的短期记忆功能:

  • 没有缓存: 就像一个记性很差的人。每次朋友问你"小明的电话是多少?",你都得去翻又厚又重的电话本(查询上游 DoH 服务器)。这显然很慢。
  • 有缓存: 就像一个记性好的人。当朋友第一次问你"小明的电话是多少?"时,你认真地查了电话本并告诉了他。在接下来的一段时间里,如果再有人问起,你就能凭着"短期记忆"立刻回答,而无需再次翻阅电话本。

Load Ants 的缓存就是这个"短期记忆"。它存储了近期 DNS 查询的结果,当相同的查询再次到来时,Load Ants 可以直接从缓存中返回答案,避免了与上游服务器之间耗时的网络通信。

缓存的两种类型

Load Ants 的"记忆"能力分为两种,都非常重要:

  1. 正向缓存 (Positive Caching)

    • 是什么: 记住那些"成功"的查询结果。例如,记住 www.google.com 的 IP 地址是 142.250.199.196
    • 作用: 这是最常见的缓存类型,它能极大地加速对常用网站的访问。
  2. 负向缓存 (Negative Caching)

    • 是什么: 记住那些"失败"的查询结果。例如,记住域名 non-existent-domain-123.com 是不存在的(NXDOMAIN),或者某个服务器暂时无法访问(ServFail)。
    • 作用: 这是一个常被忽视但极其重要的性能优化点。如果没有负向缓存,当你的网络中某个程序或设备持续尝试访问一个不存在的域名时,Load Ants 会不断地向上游服务器发起无效查询,造成不必要的资源浪费和延迟。负向缓存可以有效地终结这种无效的重复查询。

理解 TTL (生存时间)

每条 DNS 记录都有一个由权威服务器建议的"保质期",称为 TTL (Time-To-Live)。Load Ants 的缓存配置允许你对这个"保质期"进行干预,以强制执行你自己的缓存策略。

  • min_ttl (最小生存时间)

    • 用途: 强制延长那些"保质期"过短的记录。
    • 场景: 某些大型网站为了实现流量的精细调度,可能会设置一个非常短的 TTL(例如 60 秒)。这意味着你需要每分钟都去查询一次。通过设置一个较高的 min_ttl (例如 300 秒),你可以强制 Load Ants 将这条记录在缓存中保留至少 5 分钟,从而减少不必要的查询。
  • max_ttl (最大生存时间)

    • 用途: 强制缩短那些"保质期"过长的记录。
    • 场景: 有些域名可能设置了长达一天甚至更久的 TTL。如果你希望更快地获取到这个域名可能发生的 IP 地址变更,可以设置一个较低的 max_ttl (例如 3600 秒),强制缓存条目在一小时后过期,并重新向上游查询。
  • negative_ttl (负向缓存生存时间)

    • 用途: 专门为"失败"的查询结果(如域名不存在)设定一个缓存时间。
    • 场景: 这是负向缓存的核心配置。设置一个合理的 negative_ttl(例如 300 秒)意味着在 5 分钟内,所有对同一个不存在域名的查询都会被 Load Ants 直接从缓存拦截,并立即返回"不存在"的响应,而不会去打扰上游服务器。

通过精细地调整这些 TTL 设置,你可以让 Load Ants 的缓存行为最大程度地符合你的网络环境和性能需求。


下一步