我对了解iOS中的缓存机制有点困惑。
我一直在NSURLCache上阅读此博客,以自定义我的缓存政策。 我希望我的缓存完全由我的服务器缓存头控制。
所以我设置了
[request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
现在上面的博客指出我也可以为NSCachedURLResponse指定缓存策略。
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse *)cachedResponse
{
NSMutableDictionary *mutableUserInfo = [[cachedResponse userInfo] mutableCopy];
NSMutableData *mutableData = [[cachedResponse data] mutableCopy];
NSURLCacheStoragePolicy storagePolicy = NSURLCacheStorageAllowedInMemoryOnly;
// ...
return [[NSCachedURLResponse alloc] initWithResponse:[cachedResponse response]
data:mutableData
userInfo:mutableUserInfo
storagePolicy:storagePolicy];
}
那么首先要对请求使用缓存策略吗? 存储策略是请求参数还是响应参数。
答案 0 :(得分:3)
区别在于:
NSURLRequestCachePolicy
是客户端 - 服务器数据管理功能,用于描述应加载的数据源(本地缓存或远程服务器)以及它们之间的条件。
NSURLCacheStoragePolicy
仅是客户端数据管理功能,用于描述本地缓存(内存,本地数据库等;仅内存;无)的存储。
例如,如果您使用NSURLRequestReturnCacheDataElseLoad
表示请求,NSURLCacheStorageAllowedInMemoryOnly
表示响应,则会发生以下情况: