在 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 對象,根據該對象來做網絡請求。