2016-03-28 4 views
5

Ist es möglich, in AFNetworking Bild auf der Festplatte zwischengespeichert wird für mehr als Session? Zum Beispiel für eine Woche oder einen Monat. In meinem Projekt verwendet i SDWebImage und AFNetworking, aber vor wenigen Tagen fand ich, dass AFNetworking die gleiche Funktionalität wie SDWebImage hat, so ein entfernt SDWebImage und schrieb einen solchen Code Bild auf der Festplatte zu speichern:AFNetworking 3.0 auf Disk-Image-Caching

für Image

NSURLRequest *imageRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url] 
               cachePolicy:NSURLRequestReturnCacheDataElseLoad 
              timeoutInterval:60]; 
[imageView setImageWithURLRequest:imageRequest placeholderImage:placeholderImage success:nil failure:nil]; 

herunterladen Bild in Zukunft verwenden

Get Bild heruntergeladen

NSURLRequest *imageRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url] 
               cachePolicy:NSURLRequestReturnCacheDataElseLoad 
              timeoutInterval:60]; 
UIImage *image = [[AFImageDownloader defaultInstance].imageCache imageforRequest:imageRequest withAdditionalIdentifier:nil]; 

Aber all dies nur pro Sitzung arbeiten, nachdem ich alle Bilder geladen i Internet ausschalten und neu starten, meine app, Ergebnis - keine Bilder im Cache.

Auch versuche ich, einen solchen Code in AppDelegate hinzuzufügen:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:2 * 1024 * 1024 
                 diskCapacity:100 * 1024 * 1024 
                  diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 

aber ich kann immer noch nicht Cache-Bilder länger als Session.

Antwort

6

Bilder werden mit dem Standard-NSURLCache auf dem Datenträger zwischengespeichert, dh, wenn Ihre Antworten richtige Cache-Header enthalten, sollten diese Elemente auf dem Datenträger im Cache landen. So zum Beispiel sollte Header wie folgt aussehen:

"Accept-Ranges" = bytes; 
"Cache-Control" = "max-age=604800"; 
Connection = close; 
"Content-Length" = 3808; 
"Content-Type" = "image/png"; 
Date = "Tue, 29 Mar 2016 19:55:52 GMT"; 
Etag = "\"5630989d-ee0\""; 
Expires = "Tue, 05 Apr 2016 19:55:52 GMT"; 
"Last-Modified" = "Wed, 28 Oct 2015 09:42:53 GMT"; 
Server = nginx; 

auch, wenn Sie Bild herunterladen und wollen, um es von der Festplatte Cache tun:

NSURLRequest *imageRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:url] 
                 cachePolicy:NSURLRequestReturnCacheDataElseLoad 
                timeoutInterval:60]; 
UIImage *image = [UIImage imageWithData:[[AFImageDownloader defaultURLCache] cachedResponseForRequest:imageRequest].data]; 
Verwandte Themen