我使用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字段不相同,它仍然使用缓存数据。
答案 0 :(得分:0)
我想我喜欢这个问题。当我收到标题时,请求尚未完成。即使标题不同,它也会检查请求是否已完成。所以我认为我应该编写自己的缓存。
答案 1 :(得分:0)
回答是问题:
[cache setShouldRespectCacheControlHeaders:NO];
你应该使用
[cache setShouldRespectCacheControlHeaders:YES];
让缓存尊重标题信息。
希望它会有所帮助。