2016-11-18 37 views
0

我試圖找到一種方法,以防止緩存響應(在模擬器)NSURLSession通過使用來自這些問題的方法:防止緩存在NSURLSession的iOS模擬器

Prevent NSURLSession from caching responses

NSURLCache does not clear stored responses in iOS8

我不想使用的方法從這樣一個問題:

Clear NSURLSession Cache

當設置新的NSURLSession實例時,它使用ephemeralSessionConfiguration調用NSURLSessionConfiguration

我只想不緩存請求,在最壞的情況下清除應用程序退出活動時的緩存。 在applicationWillResignActive中調用[NSURLCache sharedURLCache] removeAllCachedResponses]在應用程序委託中執行時,我仍然得到Cache.db,並且在磁盤上各自的iOS Simulator緩存中存在緩存的響應/請求。

在此之前,我改變了我的一切NSURLSessionConfiguration緩存策略,以NSURLRequestReloadIgnoringCacheDataNSURLRequestReloadIgnoringLocalCacheData ​​ (所有三個測試的情況下,最後一個可能是未實現)實例(和有效的所有緩存策略)。不改變緩存策略應該導致不在模擬器上緩存服務器響應和請求?它是否依賴於響應頭中的存儲策略?

我在使用iOS 9.3和iOS 10.1模擬器的iPhone和iOS SDK的第10版。項目在Objective C中,也許完整的Swift項目會有不同的表現? 模擬器和設備的這種行爲有何不同?爲什麼會發生這種情況,是否有與使用依賴關係不同的解決方案(由於某種原因,現在不能立即使用)。

+0

您是否嘗試將NSMutableURLRequest上的cachePolicy屬性設置爲NSURLRequestReloadIgnoringCacheData?另外,將NSURLSessionConfiguration對象上的URLCache屬性設置爲nil。 –

回答

1

我有一個類似的問題,我能夠通過NSURLSessionConfiguration設置屬性 - Urlcache文件requestCachePolicy分別解決這NSURLRequestReloadIgnoringCacheData

此外,您還可以嘗試NSURLRequestReloadIgnoringCacheData上NSMutableURLRequest設置的CachePolicy屬性

+1

這是我解決方案的一部分。好,你提到'NSURLRequestReloadIgnoringCacheData' - 我檢查了[文檔](https://developer.apple。com/reference/foundation/nsurlrequestcachepolicy/nsurlrequestreloadignoringlocalandremotecachedata?language = objc),並且類似值NSURLRequestReloadIgnoringLocalAndRemoteCacheData的行爲未實現。所以要小心這個。作爲補充 - 我**手動將緩存大小設置爲0 **以防止在將來發生更改時發生意外錯誤。 –

0

所以粗魯的解決方案是...放棄應用程序退出Cache.db文件。我假設你在模擬器上應該能夠?!

但是,您是否嘗試過ephemeralSessionConfiguration?因爲蘋果頭文件說: *一個短暫的會話沒有持久性磁盤存儲的cookie, *緩存或憑證。

+0

您是否看過我的問題?它明確表示我不想使用'ephemeralSessionConfiguration'(出於各種原因)。 –