2012-09-12 160 views
7

我在做一個到NSURL的連接,我需要創建一個繞過所有緩存策略的請求。我見過的例子有:iOS緩存策略

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

請問高速緩存策略0是指什麼?已嘗試搜索數字代表什麼,但我沒有得到任何我需要的答案。謝謝! :)

回答

6

你應該看看NSURLRequestCachePolicy枚舉,這裏0均值是NSURLRequestUseProtocolCachePolicy,這意味着的NSURLRequest不會從加載數據服務器每次。

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

感謝您的詳細信息! – Annabel

+0

我認爲它會從服務器加載數據,如果緩存已過期,或者重新驗證檢測到數據更改 – huync

2

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

NSURLRequestUseProtocolCachePolicy = 0

指定在協議 實現中定義的高速緩存邏輯,如果有的話,用於特定URL負載請求。 這是URL加載請求的默認策略。

示例:如果使用HTTP,則會評估HTTP-Header字段以決定是否應使用緩存。

你的情況正確的政策是:

NSURLRequestReloadIgnoringLocalCacheData

+0

感謝您的幫助! – Annabel