5

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

4

1 回答 1

2

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

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

-(NSCachedURLResponse *)connection:(NSURLConnection *)connection
                 willCacheResponse:(NSCachedURLResponse *)cachedResponse

使用缓存系统更容易的是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;
}
于 2012-04-20T17:01:03.280 回答