iOS:数据会话与短暂会话

时间:2014-01-05 21:33:00

标签: ios objective-c uiwebview nsurlconnection nsurlsession

我的应用程序的webView加载一个页面,我注入了一些javascript,它为我自动点击并添加一个项目到我的愿望清单。对于这样的事情,你会建议使用数据会话或短暂会话来加载页面吗?速度对我来说很重要,我正在尝试优化Objective-C(yupp,甚至几毫秒)。

该页面基本上加载了产品页面,因此除了实际产品之外的所有内容总是相同的(背景视图,网站菜单栏,按钮图像等)。现在我正在使用NSURLConnection,我正在尝试更新我的代码以使用NSURLSession。

2 个答案:

答案 0 :(得分:17)

默认会话的行为与其他用于下载网址的Foundation方法类似。他们使用基于磁盘的持久缓存并在用户的密钥链中存储凭据。

  1. 使用全局或共享cookie,缓存和凭据存储对象的配置。行为类似于NSURLConnection。

  2. 共享会话使用全局单例凭据,缓存和cookie存储对象。这可用于代替使用+ [NSURLConnection sendAsynchronousRequest:queue:completionHandler:]

  3. 的现有代码

    短暂会话不会将任何数据存储到磁盘;所有缓存,凭据存储等都保存在RAM中并与会话绑定。因此,当您的应用无效时,会自动清除它们。

    1. 不会保留Cookie,缓存和凭据存储对象的私有会话配置。如名称所示,配置设置为短暂生效,并在会话失效时删除。
    2. 后台会话与默认会话类似,只是一个单独的进程处理所有数据传输。后台会话有一些额外的限制,在“Background Transfer Considerations。”

      中有所描述
      1. 后台会话类似于默认会话,但它可以在某些限制条件下代表挂起的应用程序执行网络操作。

      2. 与默认会话类似,但即使应用程序处于暂停状态,也可以执行上传或下载数据。

      3. 来自Apple Doc

        的参考资料
        //Default session
        + (NSURLSessionConfiguration *)defaultSessionConfiguration;
        
        //Ephemeral
        + (NSURLSessionConfiguration *)ephemeralSessionConfiguration;
        
        //Background 
        + (NSURLSessionConfiguration *)backgroundSessionConfiguration:(NSString *)identifier;
        

        NSURLSession任务和代理

        下图说明了NSURLSession任务的类型及其层次结构。

        More Details

        enter image description here

答案 1 :(得分:1)

我认为您可以使用默认会话,因为您希望将数据缓存到磁盘。短暂的会议没有什么

瓶颈几乎总是IO,因此当数据不会发生变化时,您需要缓存。 对于快速链接数据,这不值得,但你明确表示数据不会改变