Question

Nous construisons une application iOS qui utilise AFNetworking pour se connecter à un serveur exécutant une Tornade.Le serveur inclut l'en-tête Cache-Control: private, max-age=900 dans la réponse.Lors de l'exécution du serveur sur ma machine locale, je peux dire que AFNetworking utilise les valeurs mises en cache, car il n'existe pas de demandes reçues par le serveur sur les demandes répétées de l'application.Lorsque nous déployer la même Tornade serveur sur la machine de test, chaque demande de l'application des résultats dans une demande de réception sur le serveur, en ignorant la valeur mise en cache.

La seule différence entre les deux configurations sont l'URL du serveur et le fait que le serveur de test est accessible via une connexion HTTPS, alors que le localhost utilise le protocole HTTP.Ne HTTPS affecter la mise en cache par AFNetworking, et si oui, comment pouvons-nous obtenir AFNetworking à l'égard de l'en-tête de cache?

Était-ce utile?

La solution

Vous ne savez pas si sa va être d'aucune aide, mais ici, c'est de toute façon:AFNetworking utilise NSURLConnection qui utilise NSURLCache cache partagé.AFNetworking absolument transparente dans le cache égard et de ne pas faire quelque chose de spécifique.Mes demandes sont https et ont été mise en cache de l'amende juste.

Cache-Control réponse directives permettre à un serveur d'origine pour remplacer la valeur par défaut cacheability d'une réponse:privé Indique que l'ensemble ou une partie du message de la réponse est conçu pour un seul utilisateur et ne DOIT PAS être caché par un cache partagé.Cela permet à un serveur d'origine à l'état que les parties de la la réponse sont destinés à un seul utilisateur et ne sont pas une réponse valable pour les demandes par d'autres utilisateurs.Un privé (non partagé) cache PEUT mettre en cache la réponse.http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1

Si acceptable essayer de changer de politique publique .Journal des en-têtes de réponse de l'application et de regarder votre cache.db et de voir si, en fait, quelque chose se cache là.

Essayez de configurer partagé cache quelque chose le long des lignes de

int cacheSizeMemory = 1*1024*1024; // 4MB
int cacheSizeDisk = 100*1024*1024; // 100MB
[[NSURLCache sharedURLCache] setMemoryCapacity:cacheSizeMemory];
[[NSURLCache sharedURLCache] setDiskCapacity:cacheSizeDisk];

Une autre bonne lecture à ce sujet ici http://petersteinberger.com/blog/2012/nsurlcache-uses-a-disk-cache-as-of-ios5/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top