Alamofire - NSURLCache nicht funktioniert?
Ich mein cache da unten
var cacheSizeMemory = 20 * 1024 * 1024
var cacheSizeDisk = 100 * 1024 * 1024
var sharedCache = NSURLCache(memoryCapacity: cacheSizeMemory, diskCapacity: cacheSizeDisk, diskPath: "SOME_PATH")
NSURLCache.setSharedURLCache(sharedCache)
Anfrage anlegen mit cache policy
var request = NSMutableURLRequest(URL: NSURL(string: "\(baseUrl!)\(path)")!, cachePolicy: .ReturnCacheDataElseLoad, timeoutInterval: timeout)
Stellen Sie eine Anfrage und erhalten Sie eine Antwort mit folgenden Cache-Control
private, max-age=60
Dann versuchen, den cache prüfen
var cachedResponse = NSURLCache.sharedURLCache().cachedResponseForRequest(urlRequest)
Wert ist null
Irgendwelche Gedanken?
- Ich habe genau das gleiche problem im Moment, keine Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konnte ich manuell die cache-Seiten, indem Sie Sie auf die sharedURLCache wie diese:
NSURLCache scheint respektieren die Header vom server gesendet, auch wenn Sie das Gegenteil überall in Ihrem code.
Die Wikipedia-API, zum Beispiel, sendet
Übersetzt: Muss revalidate nach 0 Sekunden.
So NSURLCache sagt: "OK, I won' T cache nichts."
Aber durch das manuelle speichern der Antwort in den cache, funktioniert es. Zumindest auf iOS 8.2.
Fast meinen Verstand verloren auf diese. 🙂
Landete ich manuell hinzufügen
Cache-Control
alsprivate
im header meiner Anfrage und es funktioniert jetzt. Gar nicht brauchen, um manuell den cache prüfen, Alamofire bedeutet es für Sie[Swift-Lösung für die Beilegung Ablauf NSURLcache]
Ich denke, dass Hauptproblem hier ist:
ReturnCacheDataElseLoad
.@arayax gab Sie die Antwort, dass ein Update, das wird wohl, aber meine Lösung wäre so etwas wie dieses:
Da bin ich mit Alamofire für Netzwerk-Anfragen habe ich meine Konfiguration:
Und wenn ich bitte, die ich tun, überprüfen Sie internet-Konnektivität, wenn es wahr ist, dann ist klar NSURLCache, so wird es Kraft Alamofire zu machen-Anforderung auf dem server und nicht vom cache:
Ich hoffe das hilft, vielleicht für die andere Art von Problemen mit NSURLCache 🙂
War es für mich Pragma - →no-cache nach dem entfernen dieser hat alles geklappt.
Dies ist, wie ich den cache für die Arbeit mit Alamofire 4 und swift 3 (Semi-volle Funktions-Referenz):
Fand ich, dass URLCache nicht speichern von Antworten, die größer als 5% (1/20) der Kapazität.
Standard-cache hat memoryCapacity = 512000 es nicht speichern Antworten mehr als 25600.
Als Lösung erweitern Kapazität