Ash*_*ggs 19 caching ios afnetworking
是否可以禁用AFNetworking的所有缓存功能?
我正在构建自己的自定义缓存系统,并且不希望这也占用磁盘空间.
谢谢,阿什利
mat*_*ttt 25
缓存在应用程序范围内处理NSURLCache.如果未设置共享缓存,则不会缓存请求.即使使用共享NSURLCache,iOS上的默认实现也不支持磁盘缓存.
也就是说,除非你有一个非常特别的理由来编写自己的缓存系统,否则我强烈建议不要这样做.NSURLCache是应用99.9%的不够好:它从传入响应处理缓存指令和新的要求适当地使用它们,并在某种程度上是不太可能在你的应用程序中的性能瓶颈,从而自动完成.作为一个浪费了无数个小时自己制作一个人的人(之后因为完全没必要而扔掉它),我会说有更好的地方可以集中你的发展注意力.
add*_*gen 25
最初我找到了Jason Moore的工作答案,但最近我注意到我的应用程序仍在缓存请求.我没有使用最新的AFNetworking,所以我不知道在最近的版本中是否已经解决了缓存问题.
Apple的URLCache项目有这样的说法:
默认情况下,Cocoa URL加载系统使用小型共享内存缓存.我们不需要此缓存,因此我们在应用程序启动时将其设置为零.
然后执行此操作以禁用缓存.
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0
diskCapacity:0
diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
[sharedCache release];
Run Code Online (Sandbox Code Playgroud)
这将禁用整个应用程序的所有缓存,这在某些情况下可能并不理想,但由于NSURLRequest不遵守请求的缓存策略,它是我能看到的唯一选项.
Jas*_*ore 23
我在iOS 6上发现,即使请求有,也会缓存请求NSURLRequestReloadIgnoringCacheData.添加返回的缓存响应块nil可防止缓存请求.
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:20];
AFJSONRequestOperation *op =
[AFJSONRequestOperation JSONRequestOperationWithRequest:request];
// DISABLE CACHE //
[op setCacheResponseBlock:^NSCachedURLResponse *(NSURLConnection *connection, NSCachedURLResponse *cachedResponse) {
return nil;
}];
[op start];
Run Code Online (Sandbox Code Playgroud)
Jak*_*lik 10
不幸的是,这些方法都不适用于我.我设法禁用缓存的唯一方法就是这样:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26157 次 |
| 最近记录: |