iOS网络优化-2020-09-03-周四

HTTP2.0

  1. HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式。二进制格式在协议的解析和优化扩展上带来更多的优势和可能。
  2. HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量。而 HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源。头压缩能够很好的解决该问题。
  3. 多路复用,直白的说就是所有的请求都是通过一个 TCP 连接并发完成。HTTP/1.x 虽然通过 pipeline 也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,而 HTTP/2 做到了真正的并发请求。同时,流还支持优先级和流量控制。

HTTP/2 新特性浅析
HTTP2.0的那些事

iOS9开始自动支持HTTP2

NSURLCache

  1. 请使用 GET 请求。POST请求不能被缓存,只有 GET 请求能被缓存。

  2. 如果你已经使用 了 GET 请求,iOS 系统 SDK 已经帮你做好了缓存。你需要的仅仅是设置下内存缓存大小、磁盘缓存大小、以及缓存路径。甚至这两行代码不设置也是可以的,会有一个默认值。

NSURLCache *urlCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * 1024 diskCapacity:20 * 1024 * 1024 diskPath:nil];
[NSURLCache setSharedURLCache:urlCache];

iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求

文件缓存

  • 借助ETag或Last-Modified判断文件缓存是否有效;

  • 如果文件没有更新,服务端返回304,客户端从本地缓存取内容;

  • 如果文件更新,服务端返回200,客户端从服务端取内容,并更新本地缓存。

HttpDns

DNS劫持,是指在DNS解析过程中拦截域名解析的请求,然后做一些自己的处理,比如返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。根本原因就是以下两点:

1:恶意攻击,拦截运营商的解析过程,把自己的非法东西嵌入其中。
2:运营商为了利益或者一些其他的因素,允许一些第三方在自己的链接里打打广告之类的。

我们知道要要把项目中请求的接口替换成成IP其实很简单,URL是字符串,域名替换IP,无非就是一个字符串替换而已,的确这块其实没有什么技术含量,而且现在像阿里云(没开源),七牛云(开源),等一些比较大的平台在这方面也都有了比较成熟的解决方案,一个SDK,传个普通的URL进去就会返回一个域名被替换成IP的URL出来,也比较好用

可能是最全的iOS端HttpDns集成方案

参考文章

iOS网络深度优化总结

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。