Me ha resultado realmente difícil intentar desactivar el almacenamiento en caché en el marco de trabajo de Restkit. He tratado de poner la política de caché en ninguna, sin ningún efecto. ¿Cuál es la forma correcta de hacer esto?Restkit, desactivar el almacenamiento en memoria caché
Respuesta
Así que una vez que tienes un cliente, ya sea de forma explícita inicializándola:
RKClient *client = [RKClient clientWithBaseURL:url];
o al permitir que el administrador de objetos de hacerlo:
RKObjectManager* om = [RKObjectManager managerWithBaseURLString:url];
RKClient *client = om.client;
Debe ser una simple cuestión de sólo la creación la política de caché:
client.cachePolicy = RKRequestCachePolicyNone;
¿Era eso lo que estaba haciendo?
Actualización: Como el mensaje de registro es lo único preocupante, decidí rastrear su origen. La versión de tl; dr es ignorar el mensaje y confiar en lo que el proxy de registro le está diciendo.
Para comprobarlo de nuevo, busqué "Invalidar el caché en el camino" y lo encontré en dos ubicaciones RKCache invalidateSubDirectory:
y RKCache invalidateAll
y establecí los puntos de interrupción en ellas. He aquí un seguimiento de la pila parcial de algunos de mi código:
#0 0x000e6c66 in -[RKCache invalidateSubDirectory:] at RestKit/Code/Support/RKCache.m:189
#1 0x0006b767 in -[RKRequestCache invalidateWithStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:237
#2 0x0006b958 in -[RKRequestCache setStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:253
#3 0x00069abf in -[RKRequestCache initWithPath:storagePolicy:] at RestKit/Code/Network/RKRequestCache.m:60
#4 0x000586f3 in -[RKClient baseURLDidChange:] at RestKit/Code/Network/RKClient.m:339
#5 0x000589ce in -[RKClient observeValueForKeyPath:ofObject:change:context:] at RestKit/Code/Network/RKClient.m:373
#6 0x0183cd91 in NSKeyValueNotifyObserver()
#7 0x0183c895 in NSKeyValueDidChange()
#8 0x0182233e in -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:]()
#9 0x01844a82 in _NSSetObjectValueAndNotify()
#10 0x00057404 in -[RKClient initWithBaseURL:] at RestKit/Code/Network/RKClient.m:176
#11 0x00056df3 in +[RKClient clientWithBaseURL:] at RestKit/Code/Network/RKClient.m:130
lo que aprendí mirando a través de esto es que hay dos enumeraciones que controlan el almacenamiento en caché:
RKRequestCachePolicy
que es lo que se establece en el cliente, controla cuando se consulta la caché.RKRequestCacheStoragePolicy
que determina por cuánto tiempo se almacenan los resultados en el dispositivo (nunca, duración de la sesión, permanente).
Como parte de la configuración del cliente, cuando una URL se establece el cliente crea un nuevo caché con RKRequestCacheStoragePolicyPermanently
establecer la política de almacenamiento implica la limpieza de la caché de la sesión anterior y si el almacenamiento en caché está adaptado para la memoria caché permanente. Es esa compensación que está viendo en los mensajes de registro.
- 1. ASP.Net Almacenamiento en memoria caché
- 2. ¿Cómo desactivar el almacenamiento en caché en Firefox?
- 3. Almacenamiento en memoria caché PreparedStatement en Tomcat
- 4. mejor manera de desactivar el almacenamiento en caché del cliente
- 5. Symfony2 ¿desactivar el caché?
- 6. Almacenamiento en memoria caché REST y URI
- 7. Almacenamiento en memoria caché de WebConfigurationManager.AppSettings?
- 8. ¿Cómo afecta el almacenamiento en caché el consumo de memoria?
- 9. Desactivar el almacenamiento en memoria intermedia de salida
- 10. Cómo deshabilitar el almacenamiento en memoria caché de hibernación
- 11. cómo deshabilitar el almacenamiento en memoria caché de tomcat?
- 12. crossdomain.xml previene el almacenamiento en caché
- 13. Almacenamiento en memoria caché de todos los usuarios en ASP.NET
- 14. ¿Cómo puedo desactivar el almacenamiento en memoria caché del lado del cliente y del proxy en ASP.NET MVC?
- 15. Iframe problema de almacenamiento en memoria caché src en firefox
- 16. Almacenamiento en memoria caché de un archivo binario en C#
- 17. Almacenamiento en memoria caché en Haskell y paralelismo explícito
- 18. Almacenamiento en memoria caché en ASP.NET MVC Framework
- 19. Almacenamiento en memoria caché de objetos regex compilados en Python?
- 20. RestKit en android?
- 21. Rails 3.1 elementos de almacenamiento en memoria caché en heroku
- 22. ¿Desea desactivar el almacenamiento en caché en el motor de plantillas PHP Smarty?
- 23. NSURLConnection, NSURLRequest y almacenamiento en memoria caché remota
- 24. Almacenamiento en memoria caché de Solr con EHCache/BigMemory
- 25. Optimizar APC almacenamiento en caché
- 26. Almacenamiento en caché IEnumerable
- 27. ¿Cómo implemento el almacenamiento en caché asincrónico?
- 28. asp.net mvc - almacenamiento en caché
- 29. ¿Puedo desactivar la memoria caché del botón Atrás de FF3?
- 30. Almacenamiento en caché distribuido
Gracias por su respuesta. Acabo de intentar, y aún recibí el mensaje "restkit.support:RKCache.m:178 Invalidar el caché en la ruta:" –
¿Es eso lo único que sugiere que es el almacenamiento en caché? ¿Ha intentado usar Charles u otro proxy de registro para ver qué le está pasando al servidor? – drewish
He intentado el registro de proxy, nada va mal, recibí los datos esperados del servidor. De hecho, nada va mal en el comportamiento de la aplicación, mis datos son buenos, todo va según lo esperado. Pero, mi registrador sigue dándome esos mensajes "Invalidar el caché en la ruta: ....". Parece que restkit intenta eliminar el archivo existente de la memoria caché, pero no puede. Como dije, me preocupa que esas acciones no sean buenas para el rendimiento o la validación de Apple. –