我使用NSURLCache何時用盡了所有選項,但張貼在這裏看到奇怪的行爲......所以在這裏,它是:NSURLSession的NSURLCache工作不正常
我想實現組合NSURLCache
作爲基礎緩存機制與NSURLSession
。並且使用Charles和簡單的println()
我觀察到,無論我做什麼,我的應用程序都會繼續返回到服務器並重新請求以前的請求。
我驗證了我的服務器發送以下標題一致:
Cache-Control:public, max-age=31449600
Content-Length:74289
Content-Type:image/jpeg
ETag:"abcdf"
Expires:Sun, 03 Jan 2016 20:58:01 GMT
Last-Modified:Sat, 09 Nov 2013 08:05:53 GMT
然而,當我提出以下要求:
let req = NSURLRequest(URL: NSURL(string: URLString)!, cachePolicy: .ReturnCacheDataElseLoad, timeoutInterval: 15)
NSURLSession
的willCacheResponse:
委託方法不會被調用所有:
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, willCacheResponse proposedResponse: NSCachedURLResponse, completionHandler: (NSCachedURLResponse!) -> Void) {
然而,當簡單地r equesting NSURLRequest(URL: NSURL(string: URLString)!)
沒有指定具體的cachePolicy
,然後willCacheResponse:
確實被調用。然而,下次發出同樣的請求時,應用程序會返回到服務器...
我不會在任何NSURLSession委託方法中做任何響應對象修改,我的請求都是HTTP GET
。
我錯過了什麼?
我讀過很多這是在那裏上NSURLCache:
- https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/Concepts/CachePolicies.html
- http://nshipster.com/nsurlcache/
- http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/
- NSURLCache doesn't cache
- 各種其他SO線程...
設置:Xcode6.1,雨燕,iOS8上+
編輯:我推一個基本的例子來Github上顯示我的問題:https://github.com/opfeffer/nsurlcache
檢查出來,讓我知道我做錯了什麼!
我們可以看到一個小的,完整的代碼演示示例問題?例如,知道您實際發出請求的方式以及創建會話(包括會話配置對象)會很有幫助。 –
你正在請求什麼URL?你使用GET還是POST?您能否從日誌中看到客戶端發送給服務器的內容?任何防火牆都會造成問題嗎? – AlBlue
@MattGibson:我向github添加了一個示例應用程序。一探究竟!謝謝!!! – opfeffer