Mặc dù tài liệu của Apple indicating otherwise, NSURLCache
trên iOS không làm bất kỳ bộ nhớ đệm (flash) nào cả. Bạn có thể phân lớp NSURLCache
để thay đổi hành vi tìm nạp và lưu trữ hoạt động để sử dụng đĩa (như SDURLCache
), nhưng do những hạn chế nghiêm trọng sau đây về cách sử dụng và triển khai bộ nhớ cache, điều này không hoạt động tốt như bạn ' d mong đợi:NSURLConnection trên iOS không cố gắng lưu vào bộ nhớ cache đối tượng lớn hơn 50KB
NSURLConnection
thậm chí không gọistoreCachedResponse:forRequest:
cho các tệp trên khoảng 50KB (> = 52428 byte, chính xác). Điều này làm cho việc phân lớpNSURLCache
vô nghĩa đối với việc sử dụng chúng tôi (hình ảnh 200KB), bởi vì nó thậm chí sẽ không truy cập vào bộ nhớ cache. Do đó, chúng tôi phải thêm bộ nhớ đệm theo cách thủ công ở cấp độ trênNSURLConnection
.- Ngay cả khi một cuộc gọi được tích hợp sẵn của NSURLCache
storeCachedResponse:forRequest:
theo cách thủ công, nó chỉ lưu trữ phản hồi trong bộ nhớ nếu nó nhỏ hơn khoảng 180KB. Tôi đã thử nghiệm điều này bằng cách gọi storeCachedResponse theo cách thủ công và thấy rằng trước/saucurrentMemoryUsage
không thay đổi cho độ dài dữ liệu trên khoảng 180KB. Vì vậy, chúng tôi cũng phải viết bộ nhớ đệm LRU của riêng mình.
Có ai khác nhận thấy những vấn đề này không? Hay có điều gì đó tôi đang thiếu?
FYI, tôi đang chạy iOS 4.3 trong mô phỏng và trên iPad 2.
ASIHTTP không còn được hỗ trợ –