2012-04-20 66 views
0

我在使用NSURLConnection時遇到粘滯緩存問題。我創建使用NSMutableURLRequest以下行:NSURLConnection粘滯緩存

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"text/javascript,application/json,application/javascript;q=0.9,*/*;q=0.8" forHTTPHeaderField:@"Accept"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; 
[request setHTTPBody: requestData]; 

我那麼做,像這樣的連接:

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

從表面上看一切正常,它連接並在JSON拉對象的服務器發送它的辦法。如果我更新服務器上的json對象,以便它包含另一個節點,然後通過應用程序請求上面的url,它將返回緩存版本的json對象。如通過輸出收到的數據

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

我試圖添加一個時間戳到請求的網址,但仍然收到緩存版本。我在每個請求之前將receivedData var重置爲nil,然後重新連接var:didReceiveData:但仍然獲得緩存版本。

我甚至還成立了一個委託方法來強制不緩存:

- (NSCachedURLResponse *) connection:(NSURLConnection *)connection 
       willCacheResponse:(NSCachedURLResponse *)cachedResponse{ 
    return nil; 
} 

編輯:我驗證通過擊中在瀏覽器所請求的URL改變的反應,但即使該應用程序仍然使用緩存的數據。

所以我的問題是如何徹底銷燬緩存?

感謝, 布魯斯

回答

0

我發現瞭如何使用移除緩存:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

遺憾的是仍然沒有解決我們的問題,以便在蘋果開發者論壇上樂於助人的人建議,我們使用了一個數據包嗅探器來準確地查看服務器發送的內容,發現服務器發送的信息不正確。

感謝所有查看此問題的人。

Bruce