問題描述:由于使用post請求接口報(bào)405久脯,于是改成get請求锋八,但是App的熱更新出現(xiàn)bug,于是各種谷歌芹助。
分析原因:get請求在客戶端首次請求后堂湖,把數(shù)據(jù)都緩存下來了,第二次啟動App時(shí)候先從緩存中取數(shù)據(jù)状土,不會從服務(wù)器請求无蜂,導(dǎo)致熱更新不了
解決方法:
添加以下一行代碼
/**設(shè)置相應(yīng)的緩存策略*/
//忽略本地緩存,重新想服務(wù)器請求數(shù)據(jù)
self.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
整理一些關(guān)于AFNNetworking緩存策略的資料
1> NSURLRequestUseProtocolCachePolicy = 0, 默認(rèn)的緩存策略蒙谓, 如果緩存不存在斥季,直接從服務(wù)端獲取。如果緩存存在累驮,會根據(jù)response中的Cache-Control字段判斷下一步操作酣倾,如: Cache-Control字段為must-revalidata, 則詢問服務(wù)端該數(shù)據(jù)是否有更新,無更新的話直接返回給用戶緩存數(shù)據(jù)慰照,若已更新灶挟,則請求服務(wù)端.
2> NSURLRequestReloadIgnoringLocalCacheData = 1, 忽略本地緩存數(shù)據(jù),直接請求服務(wù)端.
3> NSURLRequestIgnoringLocalAndRemoteCacheData = 4, 忽略本地緩存毒租,代理服務(wù)器以及其他中介稚铣,直接請求源服務(wù)端.
4> NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData
5> NSURLRequestReturnCacheDataElseLoad = 2, 有緩存就使用,不管其有效性(即忽略Cache-Control字段), 無則請求服務(wù)端.
6> NSURLRequestReturnCacheDataDontLoad = 3, 死活加載本地緩存. 沒有就失敗. (確定當(dāng)前無網(wǎng)絡(luò)時(shí)使用)
7> NSURLRequestReloadRevalidatingCacheData = 5, 緩存數(shù)據(jù)必須得得到服務(wù)端確認(rèn)有效才使用(貌似是NSURLRequestUseProtocolCachePolicy中的一種情況)
Tips: URL Loading System默認(rèn)只支持如下5中協(xié)議: 其中只有http://和https://才有緩存策略.
(1) http://
(2) https://
(3) ftp://
(4) file://
(5) data://
參考鏈接:http://www.reibang.com/p/e39b91e58fcf