17

Ich setze NSURLCache auf einen bestimmten Ordner (../../Application Support/Offline, so dass es nicht zufällig vom Betriebssystem gelöscht wird), dann sende ich eine NSURLRequest mit NSURLRequestReturnCacheDataElseLoad Richtlinie.Woher weiß man, ob eine NSURLResponse aus dem Cache kommt?

Wie kann ich feststellen, dass die Antwort, die von einer Klasse behandelt wird, die NSURLConnectionDelegate entspricht, aus dem Cache oder aus dem Internet stammt?

Antwort

6

Guter Artikel hier über das Problem:

http://andrewmarinov.com/ioss-corenetwork-lying/

Grundsätzlich vom NSHTTPURLResponse der Statuscode ist immer 200

Also, wenn Sie wirklich wissen müssen, können Sie den Artikel überprüfen, ist in der Cache, bevor Sie den Antrag stellen

NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; 
NSHTTPURLResponse *httpCacheResponse = (NSHTTPURLResponse *)cachedResponse.response; 

Wenn so speichern Sie die geänderte ‚ETAG‘ oder ‚modifizierte-date‘ Kopf

NSString* etag = httpCacheResponse.allHeaderFields[@"etag"]; 

Dann in der Antwort-Handler-Prüfung das Etag oder Änderungsdatum ist das gleiche. Wenn ja, war die Antwort aus dem Cache!

+0

das ist im Grunde, was ich endete – greg3z

+2

Sie können immer Ihre eigene Frage beantworten! Hätte mir eine Stunde meines Lebens gerettet ;-) –

Verwandte Themen