您当前的位置:首页 > dns知识

基于 DoH 域名解析的优化实践

时间:2024-03-19 16:10:05  来源:互联网  作者:

主要方式为预解析、智能缓存与懒加载。

预解析是在 App 应用初始化阶段的启动期进行预热,即针对业务的热点域名在后台发起异步的 DoH 解析请求。这部分预解析结果在后续的业务请求中可以直接使用,进而消除首次业务请求的 DNS 解析开销,提升 App 加载速度。

通过预解析获取域名的 IP 地址,同时也会有 TTL 缓存有效时间,这个 IP 地址需要合理缓存。通常操作系统本身的 DNS 缓存粒度比较粗,只是域名与地址的关系,但在客户端可以实现更细粒度的缓存管理来提升解析与使用效率。

比如在不同的网络运营商环境下,对域名的解析结果可能会发生变化,当我们使用电信 Wi-Fi 时,解析会返回就近的电信节点的 IP 地址,当我们使用联通 3G 时,解析会返回就近的联通节点的 IP 地址。我们可以针对不同运营商的解析结果进行缓存或者根据不同 Wi-Fi 的 SSID 进行缓存,确保我们在网络切换时能快速准确地获取到对应网络下的解析地址。甚至, 我们可以做本地的持久化缓存,当下一次 App 启动时直接读取缓存用于网络访问,提升用户体验。当然,这种持久化缓存一定要同时设计好缓存失效机制。

还有一种优化策略是懒加载

懒加载与预解析的配合使用可以真正实现 DNS 的零延迟解析,核心实现思路主要是两点:

① 业务层的域名解析请求只和本地缓存交互,不发生实际的网络解析请求,如果缓存存在,不管是否过期都直接返回缓存的记录。

② 若缓存过期,在返回结果的同时,发起一个异步后台网络请求与 DoH 服务器获取新的地址。

返回一个过期的 IP 地址,好像又变成了像 LocalDNS 一样更新不及时。但实际上不一样,因为 LocalDNS 的不及时是不可控的,而我们虽然返回了一个过期的 IP 地址,但同时也会异步地去更新缓存的内容,如果这个过期的 IP 地址在业务上无法正常使用,可以重新通过缓存获取到更新后的 IP 地址。

另外异步 HTTP 请求还可以将多个过期或即将过期的域名,通过一条请求发送给 DoH 服务端,从而减少网络的消耗以及服务器的压力。

当然,实际业务中,优化手段的选择需要根据业务情况进行适配选择,以更好地应对业务挑战及实现安全、可靠的网络访问。

推荐资讯
  • 全球域名系统组织与管理架构
  • DNS基本概念和相关知识点
  • DNS应用常见安全问题或攻击方式及
  • vhdns功能之条件转发
  • vhdns功能之定向解析或指定解析
  • 几款常见的可自行搭建DNS服务器的
  • 高校DNS安全可靠性的八条建议
  • vhdns需用到的端口或防火墙的设置
  • 什么是vhdns?vhdns下载安装?
  • dns是什么?有什么功能或作用?
  • 栏目更新
    栏目热门