NSURLRequest缓存策略

时间:2012-04-20 16:49:59

标签: ios caching ios5 nsurlrequest

我正在使用带有CachePolicy的NSURLRequest来下载NSData中的plist。当我更改我的plist的内容时,我的应用程序忽略了这一点,仍然显示缓存的内容。缓存持续多长时间?如果有,是否可以选择缓存数据持续多长时间? 有没有办法检查NSURLRequest,如果服务器上的数据比缓存加载来自服务器的数据更新,或者它是否等于缓存使用缓存?

1 个答案:

答案 0 :(得分:2)

URLLoadingSystem docs

中查看控制响应缓存

您可以在委托方法

中添加自己的日期
-(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;
}