【问题标题】:AFNetworking different cache settings for different contentAFNetworking 不同内容的不同缓存设置
【发布时间】:2014-08-08 11:59:56
【问题描述】:

我正在使用 AFNetworking 2:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:2 * 1024 * 1024
                                          diskCapacity:100 * 1024 * 1024
                                          diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];

我有不同类型的内容:

  • 很少更改且有效期较长的小内容
  • 经常更改且有效期较短的小内容
  • 大图 (100KB-200KB)

如果用户打开 100 张大图片并且这些图片会占用所有缓存内存怎么办?我认为即使它还没有过期,大图像也会取代我的小内容。我该如何解决?我可以将内存分成 2 个部分(第一个用于小内容,第二个用于大图像)还是应该为这些类型的内容使用具有不同缓存策略的不同 AFHTTPSessionManager 子类?

【问题讨论】:

    标签: ios caching afnetworking afnetworking-2


    【解决方案1】:

    无论您是否使用 AFNetworking,所有可缓存 URL 请求都使用相同的 NSURLCache。创建一个新的 AFNetworking 会话管理器不会有什么不同。

    NSURLCache 会将较旧的请求从内存移动到磁盘。它不在文档中,但我敢打赌,如果东西被清除,那么NSURLCache 在决定要清除什么时会权衡访问频率和到期日期。

    如果需要保证某些数据可用,您应该自己将其写入磁盘。否则,你应该让NSURLCache 做它的事情。

    如果您不喜欢这个答案,另一种选择是使用像 SDWebImage 之类的库(或您自己的库),它不使用 NSURLCache,但实现了自己的单独缓存机制。这样您的大图像就不会干扰您的缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2013-12-08
      • 2016-04-24
      相关资源
      最近更新 更多