之前用AFNetworking做過一個離線下載的功能,但是下載過程如果遇到服務(wù)器宕機或者報錯,該下載包就一直不能重新下載了。經(jīng)過排查,終于找出了原因所在:AFNetworking為了方便離線瀏覽,會將Url的Response默認(rèn)緩存起來,其方法是:
- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block {
self.cacheResponse = block;
}
所以,一旦Response被緩存后,下次不再重復(fù)發(fā)起連接,將直接將同樣地Response返回,也就是說:網(wǎng)絡(luò)正常的情況下,服務(wù)器出錯,一旦服務(wù)器出錯的Response被緩存,就算服務(wù)器修復(fù)后,也有可能造成iOS客戶端持續(xù)報錯。這種情況將是致命的。
解決方案:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
用來清理所有URL緩存的Response