2012-07-30 1 views
1

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?

Répondre

0

La taille maximale des fichiers qui seront traités par le NSUrlCache peut être influencée par les paramètres lors de l'initialisation du cache avec:

initWithMemoryCapacity: (NSUInteger) memoryCapacity diskCapacity: (NSUInteger) diskCapacity diskPath: (NSString *) diskPath

La taille de fichier maximale est liée à memoryCapacity. Vous devez définir cela à au moins 10 (pourquoi?) Fois la taille de fichier maximale que vous souhaitez gérer.

J'ai essayé ceci avec des fichiers jusqu'à 15 Mo en utilisant https://github.com/evermeer/EVURLCache