在 app 中网络请求中使用了 DSN映射加速。
原理
其原理就是:用域名映射对应的 ip 地址,直接是用 ip地址来做请求越过域名解析过程。(同时 app 中去掉了 afnet 的域名验证)
实现过程:
第一步
在 app 初始化时通过一个全局类 ConfigManager 来通过指定的网络请求来获取 DNS 映射表(即 json 数据)同时保存在全局类中。
第二步
在封装的网络请求中业务逻辑分开。底层一个NetKit 直接操作 AFNetworking来做 post,get,down,up请求(是通过 AFURLSessionManager 类中的请求方法)。同时通过 NSDictionary 将每一个 url 生成的 AFHTTPSessionManager 对象映射保存起来。
上层业务类 Engine 类对 NetKit 返回的 data 进行一写业务逻辑操作,如数据解析,DNS加速,请求出错重新请求,数据统计等。
通过 ConfigManager 类获取 DSN 映射表根据请求的 url来获取 ip 地址。 通过 NSURLComponents 来改变 url 的 host。 根据新的 url 生成 AFHTTPSessionManager 对象重新保存在 NSDictionary 中。
第三步
通过 url 来获取字典中的 AFHTTPSessionManager 对象,根据该对象来做网络请求。