Ich setze meinen Cache wie folgt
%Vor%Anfrage mit Cache-Richtlinie erstellen
%Vor% Erstellen Sie eine Anfrage und erhalten Sie eine Antwort mit folgendem Cache-Control
private, max-age=60
Versuchen Sie dann, den Cache zu überprüfen
%Vor%Wert ist null
Irgendwelche Gedanken?
Ich war in der Lage, Seiten manuell zu cachen, indem ich sie wie folgt in den sharedURLCache schrieb:
%Vor%NSURLCache scheint die Header zu respektieren, die vom Server gesendet werden , auch wenn Sie das Gegenteil überall in Ihrem Code konfigurieren.
Die Wikipedia-API sendet zum Beispiel
%Vor% Was bedeutet: Muss nach 0 Sekunden erneut validiert werden.
Also sagt NSURLCache: "OK, ich werde nichts zwischenspeichern."
Aber durch manuelles Speichern der Antwort auf den Cache funktioniert es. Zumindest auf iOS 8.2.
Fast habe ich meine Gedanken verloren. :)
[Schnelle Lösung zum Auflösen des Ablaufs von NSURLcache]
Ich denke, dass das Hauptproblem hier ist: ReturnCacheDataElseLoad
.
@arayax hat dir die Antwort gegeben, die das wahrscheinlich beheben wird, aber meine Lösung wäre etwa so:
Da ich Alamofire for Network Anfragen verwende, habe ich meine Konfiguration eingestellt:
%Vor%Und wenn ich eine Anfrage mache, prüfe ich die Internetverbindung, wenn es wahr ist, dann lösche NSURLCache, so dass Alamofire gezwungen wird, eine Anfrage auf dem Server und nicht aus dem Cache zu stellen:
%Vor%Ich hoffe, das wird helfen, vielleicht für andere Probleme mit NSURLCache:)
Ich habe festgestellt, dass URLCache keine Antworten speichert, die größer als 5% (1/20) der Kapazität sind.
Der Standardcache hat Speicherkapazität = 512000, Speicherantworten größer als 25600 werden nicht gespeichert.
Als eine Lösung erweitern Sie die Kapazität
Tags und Links swift alamofire nsurlcache