一、前言谈到优化,首先第一步,肯定是把一个大功能,拆分成一个个细小的环节,再单个拎出来找到可以优化的点,App 的网络优化也是如此 。
在 App 访问网络的时候,DNS 解析是网络请求的第一步,默认我们使用运营商的 LocalDNS 服务 。有数据统计,在这一块 3G 网络下,耗时在 200~300ms,4G 网络下也需要 100ms 。
解析慢,并不是 LocalDNS 最大的问题,它还存在一些更为严重的问题,例如:DNS 劫持、DNS 调度不准确(缓存、转发、NAT)导致性能退化等等,这些才是网络优化最应该解决的问题 。
想要优化 DNS,现在最简单成熟的方案,就是使用 HTTPDNS 。
今天就来聊聊,DNS、HTTPDNS,以及在 Android 下,如何使用 OKHttp 来集成 HTTPDNS 。
二、DNS 和 HTTPDNS2.1 什么是 DNS
在说到 HTTPDNS 之前,先简单了解一下什么是 DNS?
在网络的世界中,每个有效的域名背后都有为其提供服务的服务器,而我们网络通信的首要条件,就是知道服务器的 IP 地址 。
但是记住域名(网址)肯定是比记住 IP 地址简单 。如果有某种方法,可以通过域名,查到其提供服务的服务器 IP 地址,那就非常方便了 。这里就需要用到 DNS 服务器以及 DNS 解析 。
DNS(Domain Name System),它的作用就是根据域名,查出对应的 IP 地址,它是 HTTP 协议的前提 。只有将域名正确的解析成 IP 地址后,后面的 HTTP 流程才可以继续进行下去 。
DNS 服务器的要求,一定是高可用、高并发和分布式的服务器 。它被分为多个层次结构 。
- 根 DNS 服务器:返回顶级域 DNS 服务器的 IP 地址 。
- 顶级域 DNS 服务器:返回权威 DNS 服务器的 IP 地址 。
- 权威 DNS 服务器:返回相应主机的 IP 地址 。
文章插图
当开始 DNS 解析的时候,如果 LocalDNS 没有缓存,那就会向 LocalDNS 服务器请求(通常就是运营商),如果还是没有,就会一级一级的,从根域名查对应的顶级域名,再从顶级域名查权威域名服务器,最后通过权威域名服务器,获取具体域名对应的 IP 地址 。
文章插图
DNS 在提供域名和 IP 地址映射的过程中,其实提供了很多基于域名的功能,例如服务器的负载均衡,但是它也带来了一些问题 。
2.2 DNS 的问题
DNS 的细节还有很多,本文就不展开细说了,其问题总结来说就是几点 。
推荐阅读
- IT工程师都需要掌握的容器技术之Docker容器网络
- 冬天“暖气病”来了!推荐六大预防妙招
- 穿衣搭配|90后打工人面试,想找个双休的工作,HR:“看来你还是不差钱啊”
- 银行|紧急扩散!遇到这样的“防疫工作人员”,请立即拉黑!
- 鸡胸肉|吉娜的眼妆有多浓?卸妆后样貌“平平无奇”,网友:也就普通人
- 春季感冒到底吃药还是硬扛 7种食物充当“特效药”
- 禽流感疫情持续升温 猜想:它会成为“超级病毒”吗
- 中考作文素材大全
- 芸豆高产种植技术与管理 芸豆怎样种植才能高产
- 轻量级H5 app开发实践之技术选型