用AFNetworking做離線下載遇到的小坑

之前用AFNetworking做過一個離線下載的功能,但是下載過程如果遇到服務器宕機或者報錯,該下載包就一直不能重新下載了。經過排查,終于找出了原因所在:AFNetworking為了方便離線瀏覽,會將Url的Response默認緩存起來,其方法是:

- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block {
    self.cacheResponse = block;
}

所以,一旦Response被緩存后,下次不再重復發起連接,將直接將同樣地Response返回,也就是說:網絡正常的情況下,服務器出錯,一旦服務器出錯的Response被緩存,就算服務器修復后,也有可能造成iOS客戶端持續報錯。這種情況將是致命的。

解決方案:

[[NSURLCache sharedURLCache] removeAllCachedResponses];

用來清理所有URL緩存的Response

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • iOS開發系列--網絡開發 概覽 大部分應用程序都或多或少會牽扯到網絡開發,例如說新浪微博、微信等,這些應用本身可...
    lichengjin閱讀 3,705評論 2 7
  • iOS網絡架構討論梳理整理中。。。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,237評論 1 23
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • 戳下邊藍字 無提取碼 百度云 我老婆是學生會長 第一季全集 更多動漫 戳右邊藍字→Neets.cc-我老婆是學生會...
    總想取個不同的昵稱閱讀 1,526評論 0 0