我正在使用ASIHTTPRequest
从互联网上下载数据。它有一个漂亮的缓存功能,您可以打开它,以便缓存下载的数据。到现在为止还挺好。但是当我将新数据上传到我的网络服务器并尝试再次下载时,我希望不使用缓存,因为数据是新的并且已经修改。但即便如此,仍然会使用缓存。
我正在使用以下代码来处理我的请求:
[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];
// When you turn shouldRespectCacheControlHeaders off, the cache will store responses even if the server
// has explictly asked for them not be be cached (eg with a cache-control or pragma: no-cache header)
[[ASIDownloadCache sharedCache] setShouldRespectCacheControlHeaders:NO];
NSURL *officesUrl = [NSURL URLWithString:@"http://www.example.com/example.json"];
ASIHTTPRequest *officesRequest = [ASIHTTPRequest requestWithURL:officesUrl];
[officesRequest setDefaultResponseEncoding:NSUTF8StringEncoding];
[officesRequest addRequestHeader:@"Cache-Control" value:@"no-cache"];
// Always ask the server if there is new content available,
// If the request fails, use data from the cache even if it should have expired.
[officesRequest setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy];
[officesRequest setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
[officesRequest setDelegate:self];
[officesRequest startAsynchronous];
修改
两张图片显示来自HTTPScoop的不同标头。第一张图片是全新下载,没有缓存内容。第二张图片我上传了新的和修改过的数据。
首先:
第二
EDIT2 :添加了日志
答案 0 :(得分:0)
我期待更多的调试输出,我不知道你为什么这么少。
我认为你只需要逐步完成响应处理,看看它为什么决定缓存版本可以使用。代码非常容易理解。
尝试在ASIHTTPRequest.m中的useDataFromCache
上设置一个断点,以canUseCachedDataForRequest
开头,特别是从readResponseHeaders
调用时。