2012-02-27 68 views
5

Tôi đã có một thời gian thực sự khó khăn để thử tắt bộ đệm ẩn trong khung công tác Restkit. Tôi đã cố gắng đặt chính sách bộ nhớ cache thành không, không ảnh hưởng gì cả. Cách chính xác để làm điều này là gì?Bộ nhớ cache, tắt bộ nhớ đệm

Trả lời

7

Vì vậy, một khi bạn đã có một khách hàng, hoặc rõ ràng khởi tạo nó:

RKClient *client = [RKClient clientWithBaseURL:url]; 

hoặc bằng cách cho phép người quản lý đối tượng làm điều đó:

RKObjectManager* om = [RKObjectManager managerWithBaseURLString:url]; 
RKClient *client = om.client; 

Nó phải là một vấn đề đơn giản chỉ việc thiết chính sách bộ nhớ cache:

client.cachePolicy = RKRequestCachePolicyNone; 

Đó có phải là những gì bạn đang làm không?

Cập nhật: Vì thông điệp ghi nhật ký là điều duy nhất đáng lo ngại nên tôi quyết định theo dõi nguồn của nó. Phiên bản tl; dr là để bỏ qua thông báo và tin tưởng proxy ghi nhật ký đang nói gì với bạn.

Để kiểm tra kỹ, tôi đã tìm kiếm "Invalid cache at path" và tìm thấy nó ở hai vị trí RKCache invalidateSubDirectory:RKCache invalidateAll và đặt điểm ngắt trên chúng. Dưới đây là một vết đống phần từ một số mã của tôi:

#0 0x000e6c66 in -[RKCache invalidateSubDirectory:] at RestKit/Code/Support/RKCache.m:189 
#1 0x0006b767 in -[RKRequestCache invalidateWithStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:237 
#2 0x0006b958 in -[RKRequestCache setStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:253 
#3 0x00069abf in -[RKRequestCache initWithPath:storagePolicy:] at RestKit/Code/Network/RKRequestCache.m:60 
#4 0x000586f3 in -[RKClient baseURLDidChange:] at RestKit/Code/Network/RKClient.m:339 
#5 0x000589ce in -[RKClient observeValueForKeyPath:ofObject:change:context:] at RestKit/Code/Network/RKClient.m:373 
#6 0x0183cd91 in NSKeyValueNotifyObserver() 
#7 0x0183c895 in NSKeyValueDidChange() 
#8 0x0182233e in -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:]() 
#9 0x01844a82 in _NSSetObjectValueAndNotify() 
#10 0x00057404 in -[RKClient initWithBaseURL:] at RestKit/Code/Network/RKClient.m:176 
#11 0x00056df3 in +[RKClient clientWithBaseURL:] at RestKit/Code/Network/RKClient.m:130 

Những gì tôi học kinh nghiệm tìm kiếm thông qua điều này là có hai sự đếm điều khiển bộ nhớ đệm:

  • RKRequestCachePolicy đó là những gì bạn thiết lập trên máy khách, nó kiểm soát khi bộ nhớ cache được tham vấn.
  • RKRequestCacheStoragePolicy xác định khoảng thời gian kết quả được lưu trữ trên thiết bị (không bao giờ, thời lượng phiên, vĩnh viễn).

Là một phần của việc thiết lập máy khách, khi URL được đặt, máy khách sẽ tạo bộ nhớ cache mới với RKRequestCacheStoragePolicyPermanently thiết lập chính sách lưu trữ liên quan đến việc xóa bộ nhớ cache phiên trước và — nếu bộ nhớ cache bị tắt — bộ nhớ cache vĩnh viễn. Đó là thanh toán bù trừ mà bạn đang nhìn thấy trong các thông điệp đăng nhập.

+0

Cảm ơn bạn đã trả lời. Tôi vừa mới thử và vẫn nhận được thông báo "restkit.support:RKCache.m:178 Lỗi bộ nhớ đệm không hợp lệ tại đường dẫn:" –

+0

Đó có phải là điều duy nhất gợi ý bộ nhớ đệm của nó không? Bạn đã thử sử dụng Charles hoặc một proxy đăng nhập khác để xem những gì đang xảy ra với máy chủ chưa? – drewish

+0

Tôi đã thử đăng nhập proxy, không có gì sai, tôi đã nhận được dữ liệu dự kiến ​​của máy chủ. Trong thực tế, không có gì sai trong hành vi của ứng dụng, dữ liệu của tôi là tốt, mọi thứ diễn ra như mong đợi. Tuy nhiên, logger của tôi giữ cho tôi những thông điệp "Invalidating cache at path: ....". Có vẻ như bộ lưu trữ cố gắng xóa tệp bộ nhớ cache hiện có nhưng không thể. Như đã nói, tôi chỉ lo lắng rằng những hành động đó không tốt cho hiệu suất, hoặc xác thực của Apple. –

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