sol*_*eil 17 json caching ios afnetworking afnetworking-2
我正在使用此代码从服务器中提取一个简单的JSON提要:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager GET:kDataUrl parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"response: %@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"JSON DataError: %@", error);
}];
Run Code Online (Sandbox Code Playgroud)
有用.但是,在我更改kDataUrl上的JSON文件并验证是否在浏览器中进行了更改后,当我再次运行应用程序时,我仍然得到之前的响应.
似乎AFNetworking以某种方式缓存了旧的响应.我不想要这种行为.我想下载当前的Feed.是否需要设置一些设置或参数来关闭缓存?
gra*_*n33 58
长话短说,只需定义您的AFNetworking经理:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
Run Code Online (Sandbox Code Playgroud)
请享用!
Cou*_*per 12
您遇到的是URL缓存的影响(请参阅NSURLCache).
可以通过为NSMutableURLRequest对象设置"缓存策略"来定义请求的缓存行为,例如:
NSMutableURLRequest* request = ...;
[request setCachePolicy: myCachePolicy];
Run Code Online (Sandbox Code Playgroud)
默认缓存行为(NSURLRequestUseProtocolCachePolicy)适用于当前协议,即HTTP.对于HTTP协议,默认情况下将缓存GET请求!
并且,AFNetworking不会更改请求的默认行为!
现在,您可以设置另一个缓存策略,例如:
NSURLRequestReloadIgnoringLocalCacheData
指定应从原始源加载URL加载的数据.不应使用现有的缓存数据来满足URL加载请求.
这可能是您想要实现的期望行为:
[request setCachePolicy: NSURLRequestReloadIgnoringLocalCacheData];
Run Code Online (Sandbox Code Playgroud)
这里的问题是,超级"方便"的API没有提供配置请求的URL缓存行为的方法.您根本无法访问使用过的请求.
因此,我建议使用较低级别的API,您可以控制所创建的NSMutableURLRequest对象,并相应地设置缓存策略.
| 归档时间: |
|
| 查看次数: |
16222 次 |
| 最近记录: |