2012-09-12 8 views
7

Estoy haciendo una conexión con el NSURL y necesito crear una solicitud para eludir toda la política de caché. He visto ejemplos como:iOS Cache Policy

NSURLRequest *request = [NSURLRequest requestWithURL:baseURL cachePolicy:0 timeoutInterval:10]; 
self.urlConnection = [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease]; 

¿Puedo preguntar a qué se refiere la política de memoria caché 0? He intentado buscar lo que representa el número, pero no recibo la respuesta que necesito. ¡Gracias! :)

Respuesta

6

usted debe echar un vistazo a NSURLRequestCachePolicy enumeración, aquí 0 media es NSURLRequestUseProtocolCachePolicy, eso significa NSURLRequest no sería cargar datos desde servidor cada vez.

enum 
{ 
    NSURLRequestUseProtocolCachePolicy = 0, 
    NSURLRequestReloadIgnoringLocalCacheData = 1, 
    NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4, 
    NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData, 
    NSURLRequestReturnCacheDataElseLoad = 2, 
    NSURLRequestReturnCacheDataDontLoad = 3, 
    NSURLRequestReloadRevalidatingCacheData = 5 
}; 
typedef NSUInteger NSURLRequestCachePolicy 
+0

gracias por la información detallada! – Annabel

+0

Creo que cargará datos del servidor si caché caducó o revalida el cambio de datos de detección – huync

2

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSURLRequest_Class/Reference/Reference.html

NSURLRequestUseProtocolCachePolicy = 0

Especifica que la lógica de almacenamiento en caché se define en la implementación del protocolo , en su caso, se utiliza para una solicitud de carga URL particular. Esta es la política predeterminada para las solicitudes de carga de URL.

Ejemplo: Si usa HTTP, los campos del encabezado HTTP se evaluarán para decidir si se debe usar el almacenamiento en caché o no.

la política adecuada en su caso es:

NSURLRequestReloadIgnoringLocalCacheData

+0

gracias por ayudar! – Annabel

1

De acuerdo con este artículo: http://blackpixel.com/blog/2012/05/caching-and-nsurlconnection.html, si está utilizando NSURLRequestUseProtocolCachePolicy y el servidor no devuelve cualquiera de caducidad o máximo de edad, el intervalo de tiempo predeterminado de la caché es de 6 - 24 horas. Así que ten cuidado con esta condición. Es una mejor práctica establecer la edad máxima o la caducidad cuando se usa NSURLRequestUseProtocolCachePolicy.