iOS開發之清除Alamofire緩存

最近做項目用到了Alamofire第三方庫,Alamofire這個庫是大名鼎鼎AFNetworking的swift版本,使用的過程中遇到一些問題,在這裏和大家分享一下,如果你遇到和我一樣的問題,希望能夠幫助到你。廢話不多說,開始吧!

我使用Alamofire的時候遇到了兩種情況:

情況一: 我用Alamofire獲取一個放在雲端的json文件的內容,測試的時候發現,就算是斷網了,app依然能夠獲取到json文件的內容。

情況二:我更新了雲端的json文件,已經確定通過url能夠下載到新的json文件,但是使用app獲取到的還是舊版json文件的內容。

綜合上面兩種情況,可以推算,可能是Alamofire在本地緩存了json文件,像網頁機制一樣,有緩存就不會再重新請求數據。上網查了一下資料,果不其然!原來Alamofire爲了保證訪問速度,默認先從緩存獲取數據,通過NSURLCache處理緩存阻止不必要的訪問,也就是說如果你多次訪問的URL都一樣的話,它就不會重新請求數據,而是從本地的緩存中獲取數據。知道問題所在就好辦了,我有兩種方法可以避免Alamofire從緩存獲取數據。

方法一:刪除app的url緩存

代碼:

// 清理緩存
URLCache.shared.removeAllCachedResponses()

方法二:設置Alamofire的requestCachePolicy爲reloadIgnoringLocalCacheData(推薦)

代碼:

// 忽略本地緩存,重新獲取,防止沒更新json文件
Alamofire.SessionManager.default.session.configuration.requestCachePolicy = .reloadIgnoringLocalCacheData

這兩種方法在swift 3.0都可以用,將代碼放到獲取json文件數據前面就可以了!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章