为什么始终使用ASIDownloadCache缓存数据?

时间:2011-11-05 03:35:35

标签: objective-c asihttprequest

我使用ASIDownloadCache来缓存下载文件,下面的代码是我如何设置请求和下载缓存。    `request = [super initWithURL:url1];     [request setTimeOutSeconds:50];

ASIDownloadCache *cache = [[ASIDownloadCache alloc] init] ;
[cache setStoragePath:[path stringByAppendingPathComponent:@"resource"]];
[cache setShouldRespectCacheControlHeaders:NO];

self.myCache = cache;    
[cache release];
[request setDownloadCache:self.myCache];   
//[self setSecondsToCache:60*60*24*30];
[request setCachePolicy:ASIAskServerIfModifiedCachePolicy];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];

` 我的问题是,当url的头被修改后,ASIDownloadCache仍在使用缓存数据。为什么?有人知道答案吗?

更改前该网址的标题如下:

HTTP / 1.1 200好的 服务器:Apache / 2.2 缓存控制:公共 内容类型:text / html;字符集= UTF-8 日期:星期一,2011年11月7日08:26:15 GMT 到期:周一,2011年11月7日08:23:35 GMT Pragma:公众 转移编码:分块 Etag:1320654215 连接:保持活力 Last-Modified:Mon,07 Nov 2011 08:23:35 GMT

修改后的标题如下所示:

HTTP / 1.1 200好的 服务器:Apache / 2.2 缓存控制:公共 内容类型:text / html;字符集= UTF-8 日期:星期一,2011年11月7日08:28:49 GMT 到期日:2011年11月7日星期一08:28:32 GMT Pragma:公众 转移编码:分块 Etag:1320654512 连接:保持活力 Last-Modified:Mon,07 Nov 2011 08:28:32 GMT

即使Last-Modified字段不相同,它仍然使用缓存数据。

2 个答案:

答案 0 :(得分:0)

我想我喜欢这个问题。当我收到标题时,请求尚未完成。即使标题不同,它也会检查请求是否已完成。所以我认为我应该编写自己的缓存。

答案 1 :(得分:0)

回答是问题:

[cache setShouldRespectCacheControlHeaders:NO];

你应该使用

[cache setShouldRespectCacheControlHeaders:YES];

让缓存尊重标题信息。

希望它会有所帮助。