跳转到内容

更快的请求响应

付费用户使用AdGuard私有服务, DNS请求路径如下:

DNS请求路径

根据路径可以分析最快响应方案.

最快的响应是本地缓存命中, 由于本地缓存是内存级别的, 因此速度非常快, 只需要几微秒.

这由DNS响应的TTL(time to live)值控制, 通常是几分钟到几小时, 表示查询结果在这段时间内有效, 不需要再次查询.

您可以在控制面板 -> 设置 -> DNS 设置 -> DNS 缓存配置 -> 覆盖最小 TTL 值中设置最小TTL值, 增大该值以延长缓存时间, 使得系统更多的使用本地缓存, 通常的TTL值是600秒.

但是, 由于本站同时有过滤能力, 如果您需要的服务被广告规则误拦截, 那么即使您暂时关闭了加密DNS, 也无法立刻访问到您需要的服务, 因为本地缓存的结果是被过滤规则修改过的. 因此, 设置为60秒是一个比较安全的值, 保证少数情况下用户不会因为误拦截, 在关闭加密DNS后等待过长时间.

本站目前使用位于杭州的阿里云服务器, 可以满足绝大部分东部地区用户的低延迟需求, 随着业务增长, 未来会在全国范围内增加服务器.

默认为每个用户设置了4MB的DNS缓存, 根据经验, 这已经足够一个家庭的使用. 该设置的自由修改可能导致用户服务被强制中止, 本站已屏蔽了该设置的修改入口.

由于使用的阿里云服务, 上游DNS服务也选用了阿里云的DNS服务, 速度非常快, 通常在几毫秒内返回结果.

用户会有三个请求上游DNS服务器的方式:

  1. 负载均衡: 本站默认使用了负载均衡, 会自动选择最快的服务器返回结果.
  2. 并行请求: 本站暂时不会限制并行请求的使用.
  3. 最快的IP地址: 当前没有意义的设置, 本站已屏蔽了该设置的修改入口.

说明一下为什么最快的IP地址没有意义, 最快IP需要由真正访问服务的设备本身来选择. 当AdGuard服务运行在杭州, 而用户在北京, AdGuard会认为杭州的IP地址最快, 但是实际上用户访问北京的服务速度最快, 选择杭州的IP地址反而会增加延迟. 因此, 本站已屏蔽了该设置的修改入口. 此设置在用户的家庭网络中可能有用, 但是在公共服务中没有意义.

影响网络体验的因素有很多, 例如服务端带宽, 网络拥塞, 服务器负载, 网络质量等, 选择最快的IP地址并不能保证最快的响应速度, 延迟只是其中的一个因素, 不是唯一的因素. 为避免用户设置错误导致服务质量下降, 本站已屏蔽了该设置的修改入口.

最常用的模式是黑名单列表, 用户可以从预置的黑名单列表中选择. 黑名单的命中使用hash算法, 无论规则量多少, 命中时间都是O(1), 用户不必担心规则量过大导致命中时间过长.

但是, 规则计算后存储在内存, 每个用户的服务内存使用限制在300MB以内, 这可以满足绝大部分用户的需求, 如果用户的规则量过大, 可能会导致内存不足, 服务被反复重启, 造成服务中断.

本站暂时屏蔽了第三方规则的使用, 以避免用户引入过大的规则. 未来有更好的限制手段后, 会重新开放第三方规则的使用.

希望获得更快的请求响应, 用户可以:

  1. 适当增大最小TTL值, 增大本地缓存命中率.
  2. 设置合适的DNS缓存大小(已预设值).
  3. 选择地理位置最接近的城市创建服务(待企业发展).
  4. 无出海需求, 选择负载均衡; 有出海需求, 选择并行请求.
  5. 使用合适自己的黑名单规则, 避免引入过大的规则.