2016-08-02 27 views
0

Hallo ich habe über Cache-Politik gelesen, aber immer noch nicht ganz klar. Mein Zweck ist es, Anfrage-Cache 3 Minuten zu setzen. Antwort-Cache 3 Minuten. behalte den alten Cache für 1 Tag. Welche Implementierung sollten wir verwenden? Gibt es eine Einstellung, die wir neben den Standardeinstellungen ändern können? (Ich verwende AFNetworking 3 für Anfrage und Antwort). Jede Hilfe ist sehr zu schätzen. DankWelche Cache-Methode sollten wir verwenden iOS App

NSURLRequestCachePolicy 

NSURLRequest has a cachePolicy property, which specifies the caching behavior of the request according to the following constants: 

NSURLRequestUseProtocolCachePolicy: Caching logic defined in the protocol implementation is used for a particular URL load request. This is the default policy. 
NSURLRequestReloadIgnoringLocalCacheData: Data should be loaded from the originating source. No existing cache data should be used. 
NSURLRequestReloadIgnoringLocalAndRemoteCacheData: Not only should the local cache data be ignored, but proxies and other intermediates should be instructed to disregard their caches so far as the protocol allows. 
NSURLRequestReturnCacheDataElseLoad: Existing cached data should be used, regardless of its age or expiration date. If there is no existing data in the cache corresponding to the request, the data is loaded from the originating source. 
NSURLRequestReturnCacheDataDontLoad: Existing cache data should be used, regardless of its age or expiration date. If there is no existing data in the cache corresponding to the request, no attempt is made to load the data from the originating source, and the load is considered to have failed, (i.e. “offline” mode). 
NSURLRequestReloadRevalidatingCacheData: Existing cache data may be used provided the origin source confirms its validity, otherwise the URL is loaded from the origin source. 

Antwort

1

Sie sollten fast immer NSURLRequestUseProtocolCachePolicy verwenden, wenn Sie aus irgendeinem Grund ganz zu töten sind versucht, das Caching.

Die Cache-Dauer sollte vom Server als Teil der Antwort (im Header Cache-Control) festgelegt werden. Der iOS-URL-Cache unterliegt den in diesem Header angegebenen Richtlinien.

+0

Hallo danke für deine Hilfe. Gibt es ein Beispiel für die Anpassung NSURLRequestUseProtocolCachePolicy, um die Eigenschaft zu ändern? –

+0

Sie wollen den Cache-Control-Header auf seinem Weg in den Cache ändern? Ich weiß nicht, ob es ein Beispiel dafür gibt, aber Sie würden es vermutlich tun, indem Sie die Delegiertenmethode "URLSession: dataTask: willCacheResponse: completionHandler:" implementieren und ein neues ** NSCachedURLResponse ** -Objekt basierend auf einem modifizierten ** erstellen. NSURLResponse ** -Objekt, das verschiedene Headerwerte enthält. – dgatwood

+0

Ja, ich meine anpassen, um eigene Implementierung von Cache zu verwenden, wenn Server nicht im Cache zwischengespeichert (um Cache-Zeit, Größe, Gültigkeitsdauer festlegen) –