2012-04-20 47 views
5

Tôi đang sử dụng NSURLRequest với CachePolicy để tải xuống một plist trong NSData. Khi tôi thay đổi nội dung của plist của tôi ứng dụng của tôi là bỏ qua điều này và vẫn trình bày nội dung được lưu trữ. Bộ nhớ cache tồn tại trong bao lâu? Nếu có thì có tùy chọn để nói dữ liệu bộ nhớ cache tồn tại trong bao lâu? Có cách nào để kiểm tra trong NSURLRequest nếu dữ liệu trên máy chủ mới hơn bộ nhớ cache tải dữ liệu từ máy chủ hoặc nếu nó bằng bộ nhớ cache sử dụng bộ nhớ cache?Chính sách bộ nhớ cache của NSURLRequest

Trả lời

2

Hãy xem Kiểm soát phản hồi bộ nhớ đệm trong URLLoadingSystem docs.

Bạn có thể thêm ngày của riêng bạn trong các phương pháp đại biểu

-(NSCachedURLResponse *)connection:(NSURLConnection *)connection 
       willCacheResponse:(NSCachedURLResponse *)cachedResponse 

nhiều dễ dàng hơn với hệ thống bộ nhớ đệm là ASIHTTPRequest. Tôi khuyên bạn nên sử dụng hệ thống tải URL này.

Từ các tài liệu táo:

Ví dụ trong Liệt kê 6 ngăn cản bộ nhớ đệm của https câu trả lời. Nó cũng thêm ngày hiện tại vào từ điển thông tin người dùng cho các câu trả lời được lưu trong bộ nhớ cache.

-(NSCachedURLResponse *)connection:(NSURLConnection *)connection 
       willCacheResponse:(NSCachedURLResponse *)cachedResponse 
{ 
    NSCachedURLResponse *newCachedResponse = cachedResponse; 

    if ([[[[cachedResponse response] URL] scheme] isEqual:@"https"]) { 
     newCachedResponse = nil; 
    } else { 
     NSDictionary *newUserInfo; 
     newUserInfo = [NSDictionary dictionaryWithObject:[NSCalendarDate date] 
               forKey:@"Cached Date"]; 
     newCachedResponse = [[[NSCachedURLResponse alloc] 
           initWithResponse:[cachedResponse response] 
            data:[cachedResponse data] 
            userInfo:newUserInfo 
            storagePolicy:[cachedResponse storagePolicy]] 
          autorelease]; 
    } 
    return newCachedResponse; 
} 
+0

Thanks.I đặt ngay bây giờ thành không. Nhưng làm thế nào để làm cho bộ nhớ cache ở lại trong một thời gian nhất định hoặc kiểm tra nếu có dữ liệu mới hơn từ máy chủ có sẵn? – halloway4b

+0

Tôi đã cập nhật câu trả lời của mình –

+0

Tài liệu SDK iOS 6.1 nêu rõ: kết nối: willCacheResponse: Đã gửi trước khi kết nối lưu trữ phản hồi được lưu trong bộ nhớ cache, để cho đại biểu có cơ hội thay đổi nó. (bắt buộc) (Khả dụng trong iOS 2.0 đến iOS 4.3.) – cynistersix

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