NSURLRequest缓存策略

hal*_*y4b 5 caching nsurlrequest ios ios5

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

Jon*_*lli 3

查看URLLoadingSystem 文档中的控制响应缓存。

您可以在委托方法中添加自己的日期

-(NSCachedURLResponse *)connection:(NSURLConnection *)connection
                 willCacheResponse:(NSCachedURLResponse *)cachedResponse
Run Code Online (Sandbox Code Playgroud)

使用缓存系统更容易的是ASIHTTPRequest。我推荐使用这个 URL 加载系统。

来自苹果文档:

清单 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;
}
Run Code Online (Sandbox Code Playgroud)