7
votes

Comment puis-je ajouter la mise en cache de demande HTTP à une application utilisant ASIHTTPQUESTS?

J'utilise ASIHTTPQUESTS et un asinetworkQueue dans une application iPhone pour récupérer certains fichiers XML 100K et beaucoup de vignettes à partir d'un service Web. J'aimerais mettre en cache les demandes dans le style de nsurlcache . ASI ne semble pas supporter la mise en cache tel quel et j'ai examiné le code et cela tombe sur c pour créer les demandes, l'insertion de la couche nsurlcache semblait difficile.

Quel est le meilleur moyen de mettre en œuvre cela?


0 commentaires

5 Réponses :


0
votes

NsurlConnection est en faveur de la mise en cache dans le style de Nsurlcache, et cela fait beaucoup de travail pour vous dans les coulisses. Il a même une belle méthode de déléguée qui vous permettra de manipuler la cacheResponse:

- (NSCACHEDURLResponse *) Connexion: (NsurlConnection *) Connexion WillCacheresponse: (NSCachedurLResponse *) CacheResponse


0 commentaires

1
votes

Vous pouvez fournir votre propre mise en cache avant de tomber dans le code ASI.

Enveloppez votre code ASI dans une classe qui a une méthode:

- (NSString *) GetContentFor: (nsurl *) URL

Cette méthode vérifie d'abord une nsdiction interne pour voir s'il a une clé présent pour l'URL spécifiée. Si tel est le cas, il renvoie l'objet stocké avec la clé.

Si ce n'est pas le cas, il effectue l'asiequest normal. Lorsque la demande est reçue du serveur, elle le stocke en tant que chaîne dans votre dictionnaire avec la clé de l'URL.

Bien sûr, vous devrez traiter des demandes asynchrones et expirer d'anciennes demandes avec soin.


0 commentaires

1
votes

Quelqu'un qui demande comment elle peut faire cela avec ASIHTTPQUEST directement peut être intéressé par ce Branche du code qui ajoute la prise en charge de cette fonctionnalité en option.


0 commentaires

3
votes

ASIHTTPEQUEST prend maintenant en charge la mise en cache - Découvrez AsidownloadCache Ie.

[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]]


0 commentaires

0
votes

Essayez ceci, cela fonctionne pour moi. XXX


0 commentaires