2012-09-12 36 views
7

Tôi đang kết nối với NSURL và tôi cần phải tạo yêu cầu để bỏ qua tất cả chính sách bộ nhớ cache. Tôi đã thấy các ví dụ như:Chính sách bộ nhớ cache iOS

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

Tôi có thể hỏi chính sách bộ nhớ cache 0 đề cập đến không? Đã cố gắng tìm kiếm những gì số đại diện nhưng tôi không nhận được bất kỳ câu trả lời tôi cần. Cảm ơn! :)

Trả lời

6

bạn nên có một cái nhìn tại NSURLRequestCachePolicy enum, đây 0 bình là NSURLRequestUseProtocolCachePolicy, có nghĩa là NSURLRequest sẽ không tải dữ liệu từ máy chủ mỗi lần.

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

cảm ơn thông tin chi tiết! – Annabel

+0

Tôi nghĩ rằng nó sẽ tải dữ liệu từ máy chủ nếu bộ nhớ cache hết hạn hoặc xác thực lại phát hiện thay đổi dữ liệu – huync

2

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

NSURLRequestUseProtocolCachePolicy = 0

Chỉ định rằng logic bộ nhớ đệm được xác định trong việc thực hiện Nghị định thư , nếu có, được sử dụng cho một yêu cầu tải URL cụ thể. Đây là chính sách mặc định cho các yêu cầu tải URL.

Ví dụ: Nếu bạn sử dụng HTTP, trường Tiêu đề HTTP sẽ được đánh giá để quyết định hoặc không lưu vào bộ nhớ đệm sẽ được sử dụng.

Chính sách đúng trong trường hợp của bạn là:

NSURLRequestReloadIgnoringLocalCacheData

+0

cảm ơn bạn đã trợ giúp! – Annabel

1

Theo bài viết này: http://blackpixel.com/blog/2012/05/caching-and-nsurlconnection.html, nếu bạn đang sử dụng NSURLRequestUseProtocolCachePolicy và máy chủ không trả lại hoặc hết hạn hoặc max-age, khoảng thời gian bộ nhớ cache mặc định là 6-24 giờ. Vì vậy, hãy cẩn thận về tình trạng này. Thực hành tốt hơn là đặt độ tuổi tối đa hoặc hết hạn khi sử dụng NSURLRequestUseProtocolCachePolicy.

Các vấn đề liên quan