Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS Cache Policy

I am doing a connection to the NSURL and I need to create a request to bypass all the cache policy. I have seen examples such as :

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

May I ask what does the cache policy 0 refers to? Have tried searching for what the number represents but I'm not getting any answer I need. Thanks! :)

like image 736
Annabel Avatar asked Sep 12 '12 05:09

Annabel


2 Answers

According to this article: http://blackpixel.com/blog/2012/05/caching-and-nsurlconnection.html , if you are using NSURLRequestUseProtocolCachePolicy and the server does not return either expiration or max-age, the default cache time interval is 6 - 24 hours. So Be careful about this condition. It is a better practice to set max-age or expiration when using NSURLRequestUseProtocolCachePolicy.

like image 182
jianpx Avatar answered Sep 30 '22 12:09

jianpx


you should have a look at NSURLRequestCachePolicy enum, here 0 mean is NSURLRequestUseProtocolCachePolicy, that means NSURLRequest would not load data from server every time.

enum
{
   NSURLRequestUseProtocolCachePolicy = 0,
   NSURLRequestReloadIgnoringLocalCacheData = 1,
   NSURLRequestReloadIgnoringLocalAndRemoteCacheData =4,
   NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
   NSURLRequestReturnCacheDataElseLoad = 2,
   NSURLRequestReturnCacheDataDontLoad = 3,
   NSURLRequestReloadRevalidatingCacheData = 5
};
typedef NSUInteger NSURLRequestCachePolicy
like image 41
Mil0R3 Avatar answered Sep 30 '22 14:09

Mil0R3