2015-06-16 49 views
11

Tôi gặp sự cố với trình duyệt internet tùy chỉnh của mình. Tôi đang sử dụng WKWebView. Tôi có các tab trong ứng dụng của mình. Nếu tôi nhấp vào một tab mới NSURLRequest tải trong WKWebView. Tôi cần triển khai bộ nhớ cache. Nếu người dùng nhấn vào một tab, tôi muốn tải dữ liệu bộ nhớ cache thay vì mới. Rất tiếc, mã này không hoạt động:Bộ nhớ cache cho WKWebView

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:0.0]; 
[self.webView loadRequest:request]; 

Bạn có thể hướng dẫn tôi cách triển khai bộ nhớ cache cho WKWebView không?

Trả lời

6

Nếu bạn sử dụng NSURLRequestUseProtocolCachePolicy, là mặc định, bạn không cần phải làm gì khác. Chính sách này sẽ tự động xem xét phản hồi từ máy chủ để quyết định có nên thực sự truy xuất và lấy lại dữ liệu hay không.

Nếu máy chủ sử dụng tiêu đề HTTP Kiểm soát bộ nhớ cache và đặt độ tuổi tối đa cho phản hồi, NSURLSession sẽ tôn trọng điều này và trả về các câu trả lời được lưu trong bộ nhớ cache trước khi hết hạn.

3

Tôi thường sẽ tải từ máy chủ nếu tôi có kết nối internet. Nếu không, tôi tải từ bộ nhớ cache.

if reachability.isReachable { 
      urlRequestCache=NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.UseProtocolCachePolicy, timeoutInterval: 10) 
     } 
     else { 
      urlRequestCache = NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReturnCacheDataElseLoad, timeoutInterval: 60) 
     } 
     theWebView.loadRequest(urlRequestCache) 
+0

Điều này không hiệu quả đối với WKWebView, như đã đề cập ở đây, https://forums.developer.apple.com/thread/53573. – guoc

+0

@guoc - Tôi đã thử bản thân mình trước năm và nó hoạt động tốt trong wkwebview –

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