Je met en cache localement certains des fichiers les plus volumineux requis pour un UIWebView et une sous-classe de NSURLCache avec une implémentation personnalisée pour aider à traiter ces fichiers.NSURLCache et fichiers .svg
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
J'utilise ceci pour pirater les demandes et renvoyer une copie stockée localement des fichiers (principalement t
Le corps de cachedResponseForRequest: demande (sans la plaque de la chaudière) est essentiellement:
// logic to figure out what the local file is, load it into a NSData object (f)
NSURLResponse *r = [[NSHTTPURLResponse alloc] initWithURL:request.URL MIMEType:mimetype expectedContentLength:[f length] textEncodingName:nil];
NSCachedURLResponse *cr = [[NSCachedURLResponse alloc] initWithResponse:r data:f] ;
[super storeCachedResponse:cr forRequest:request];
return cr;
Cela fonctionne correctement pour tout le contenu mis en cache en dehors d'une seule image svg.Lorsque l'image svg est tentée de charger, elle passera par cacheedResponseForRequest: request, construira un objet NSCachedURLResponse et le retournera
Toutefois, la prochaine chose que l'application fait est de télécharger le fichier à partir du serveur distant, puis toute demande ultérieure est servie à partir du cache. Nous ne voulons pas télécharger le fichier à distance car il est relativement volumineux et a un impact sur les performances.
Est-ce que NSURLCache traite les fichiers .svg différemment des autres types de fichiers?