我正在使用带有CachePolicy的NSURLRequest来下载NSData中的plist。当我更改我的plist的内容时,我的应用程序忽略了这一点,仍然显示缓存的内容。缓存持续多长时间?如果有,是否可以选择缓存数据持续多长时间? 有没有办法检查NSURLRequest,如果服务器上的数据比缓存加载来自服务器的数据更新,或者它是否等于缓存使用缓存?
答案 0 :(得分:2)
您可以在委托方法
中添加自己的日期-(NSCachedURLResponse *)connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse *)cachedResponse
缓存系统更加容易ASIHTTPRequest。我建议使用此URL加载系统。
来自apple docs:
清单6中的示例阻止了https响应的缓存。它 还会将当前日期添加到用户信息字典以获取响应 这是缓存的。
-(NSCachedURLResponse *)connection:(NSURLConnection *)connection
willCacheResponse:(NSCachedURLResponse *)cachedResponse
{
NSCachedURLResponse *newCachedResponse = cachedResponse;
if ([[[[cachedResponse response] URL] scheme] isEqual:@"https"]) {
newCachedResponse = nil;
} else {
NSDictionary *newUserInfo;
newUserInfo = [NSDictionary dictionaryWithObject:[NSCalendarDate date]
forKey:@"Cached Date"];
newCachedResponse = [[[NSCachedURLResponse alloc]
initWithResponse:[cachedResponse response]
data:[cachedResponse data]
userInfo:newUserInfo
storagePolicy:[cachedResponse storagePolicy]]
autorelease];
}
return newCachedResponse;
}