首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLSession的最佳实践是什么?

NSURLSession的最佳实践是什么?
EN

Stack Overflow用户
提问于 2020-12-23 09:53:48
回答 1查看 274关注 0票数 0

先订阅我的应用程序:

  1. 大多数场景使用AFNetworking,一小部分场景使用NSURLSession.sharedSession或创建新的NSURLSession。
  2. 使用一个URLProtocol实例来处理几乎所有的请求,在-startLoading函数的末尾,只使用一个NSURLSession来恢复所有任务。

我的问题是:

  1. 我知道URLSession实例会导致内存增长,并且它会持续大约10分钟,那么应用程序保存URLSession实例的最大限制是什么?
  2. NSURLSession的最佳实践是什么?是否建议对整个应用程序只使用一个URLSession实例?或者固定域使用固定的NSURLSession( A域使用A会话,B域使用B会话)?
  3. 应该创建几个URLProtocol实例来处理不同的域请求吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-01-12 21:53:43

您希望根据需要使用尽可能少的URLSessions。通常,这只是一个,它也不太可能使这个会话无效,并在应用程序的生命周期内创建一个新的会话。

之所以有尽可能少的请求,是因为URLSession专为处理多个网络请求而设计的--同时并行或连续地执行它们--并且可以优化在此会话中执行的所有请求,以便使用更少的内存、更少的功率和实现更快的执行时间。

另一方面,在不同的URLSessions中优化执行的请求的选项要少得多。特别是对于运行在不同URLSessions中的请求,不能通过使用HTTP/2来提高性能。

但是,可能存在创建多个需求或情况的情况。例如,您使用第三方图像加载库来创建自己的URLSession。或者您需要不同的URLSession配置,如蜂窝使用、cooky策略或缓存策略等,这些配置不能共享。

或者,您希望将某个URLSession (它是URLCache和凭据缓存)绑定到某个经过身份验证的用户。当您的应用程序中有一些“注销”功能时,您可以使会话无效,清除凭据存储和URLCache。同时,您有另一个用于“公共”API的URLSession,以及用于图像加载的另一个URLSession,它们不受“注销”的影响,并且缓存的响应应该保存在哪里。

为每个请求创建一个URLSession,然后让它在请求完成时挂起,然后在下一个请求中创建另一个URLSession,这是一个普通的不-不。你不能做得比这更糟。

另请参阅

苹果开发者论坛

WWDC: NSURLSession:新特性和最佳实践

WWDC:用NSURLSession联网

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65422247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档