Dữ liệu NSData +WithContentsOfURL có bất kỳ loại bộ nhớ đệm nào theo mặc định? Có ai đã thử nghiệm một số loại sự cố khi sử dụng phương pháp này hay không, cách hiệu quả nhất để lấy Dữ liệu từ web là gì?Dữ liệu NSDataWithContentsOfURL cache
Trả lời
Tài liệu không nói rằng nó sẽ lưu vào bộ nhớ cache, vì vậy tôi nghĩ chúng ta nên giả định rằng chúng không thực hiện bất kỳ bộ nhớ đệm nào.
Những loại dữ liệu mà bạn muốn để có được
UIImage: yes, tôi nghĩ rằng bạn nên sử dụng NSData
Video: bạn nên sử dụng MPMoviePlayerController cho streaming
Text: Tôi nghĩ rằng bạn có thể làm bình thường NSUrlConnection. Nó cũng có đồng bộ, đồng bộ và lưu vào bộ nhớ đệm
Sử dụng ASIHTTPRequest. Đó là thư viện máy khách HTTP của bên thứ ba làm cho tương tác mạng MUCH đơn giản hơn và có các chức năng bộ nhớ đệm rất đẹp.
CẬP NHẬT: Chỉ cần có một câu trả lời cho câu trả lời này, đây là lời nhắc tốt để quay lại và cập nhật. Lot đã thay đổi kể từ tháng 8 '10. Đáng chú ý nhất: ASIHTTPRequest hiện không được chấp nhận và tác giả của nó khuyến khích mọi người sử dụng cái gì khác. AFNetworking có vẻ là một lựa chọn phổ biến.
Đã thay thế bản ghi chú của tôi bằng ghi chú. Không có gì cá nhân, rõ ràng, tôi chỉ không muốn mọi người nghĩ rằng đó vẫn là một câu trả lời hay. Làm việc tốt trên bản cập nhật. :) –
@StevenFisher - Số lượng địa điểm trong lịch sử SO của tôi, nơi tôi chân thành khuyên bạn nên ASIHTTPRequest là đáng kinh ngạc. Tôi đang đếm ngược về việc giúp tôi tìm tất cả! –
Bạn có thể muốn cân nhắc xóa câu trả lời, ít nhất là trong ngữ cảnh này ... Tôi không nghĩ bạn phải quay lại tất cả mọi thứ. –
Tốt nhất bạn nên sử dụng NSURLConnection. NSURLRequest bạn cung cấp cho nó có thể được cấu hình để làm bộ nhớ đệm theo cách bạn muốn nhưng theo mặc định nó sẽ chỉ làm bộ nhớ đệm tiêu chuẩn của các tài nguyên HTTP có các tiêu đề thích hợp trong phản hồi của chúng.
Đây là những gì tôi làm:
NSData *data = [NSURLConnection sendSynchronousRequest:
[NSURLRequest requestWithURL:url]
returningResponse:nil
error:&error];
Hãy chắc chắn để đặt điều này trong một NSOperationQueue đó không phải là hàng đợi chính của bạn hoặc off-load nó từ chủ đề chính trong một số cách khác, mặc dù. Ngoài ra, hãy sử dụng yêu cầu không đồng bộ.
Điều này làm việc cho tôi. – razorhead
nếu những gì bạn cần chỉ là tải xuống hình ảnh từ url, đừng bận tâm sử dụng bất kỳ thư viện nào, chỉ cần một lệnh dispatch_async đơn giản là OK. như thế này:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void)
{
NSData * data = [NSData dataWithContentsOfURL:imageUrl];
dispatch_async(dispatch_get_main_queue(), ^(void){
self.image = [UIImage imageWithData:data];
});
});
Sự cố là hình ảnh không được lưu vào bộ nhớ cache vì vậy phương pháp này là mạng nặng nếu cùng một hình ảnh được sử dụng lại ở nhiều nơi. –
Có vẻ như trên iPhone5s chính sách mặc định là cache (unlinke iPhone5 trở về trước).
Bạn có thể xử lý thông qua tùy chọn tham số chính sách bộ nhớ cache cho NSData. Ví dụ: nếu bạn muốn tránh bộ nhớ cache, bạn có thể sử dụng chế độ ẩn sau:
[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url] options:NSDataReadingUncached error:nil];
- 1. AccessDate của tệp không bị thay đổi sau khi đọc Tệp theo [Dữ liệu NSDataWithContentsOfURL: ...]
- 2. Tại sao dữ liệu NSDataWithContentsOfURL đôi khi trả về giá trị NULL?
- 3. Sử dụng biến tĩnh cho dữ liệu bộ nhớ cache
- 4. Django cache cache.set Không lưu trữ dữ liệu
- 5. IE8 getJSON Dữ liệu được lưu trong bộ nhớ cache
- 6. Chiến lược lưu bộ nhớ cache, Bộ nhớ cache đầu ra so với Bộ nhớ cache dữ liệu hoặc cả hai?
- 7. Đối tượng dữ liệu bộ nhớ cache vs phiên trong ASP.Net
- 8. Internet Explorer hiển thị dữ liệu bộ nhớ cache qua Ajax Pull với 304 Kết quả
- 9. Android tính toán bộ nhớ cache và kích thước dữ liệu như thế nào?
- 10. Android & Admob lưu trữ dữ liệu không mong muốn và giá trị bộ nhớ cache
- 11. Cách tốt nhất để dữ liệu bộ nhớ cache trong Android
- 12. Làm cách nào để buộc Windows xóa tất cả dữ liệu bộ nhớ cache trên đĩa?
- 13. Dữ liệu Khung thực thể bộ nhớ cache và theo dõi các thay đổi của nó?
- 14. Magento vô hiệu hóa bộ nhớ cache từ cơ sở dữ liệu
- 15. $ .getJSON trả lại dữ liệu được lưu trong bộ nhớ cache trong IE8
- 16. Dữ liệu bộ nhớ cache trong SESSION PHP hoặc truy vấn từ db mỗi lần?
- 17. Bộ nhớ cache dữ liệu cấp 2 Hibernate và thử nghiệm tích hợp/chấp nhận
- 18. Bộ nhớ cache dữ liệu trong Tùy chọn được chia sẻ
- 19. Trong Nhà cung cấp PowerShell, khi nào bạn làm mới và dữ liệu bộ nhớ cache?
- 20. Mở rộng bộ nhớ cache dữ liệu ASP.NET được chia sẻ trên trang trại
- 21. Visual Studio có hỗ trợ hoạt động của bộ nhớ cache dữ liệu không?
- 22. Xóa dữ liệu người dùng hoặc Xóa bộ nhớ cache trên Phonegap android
- 23. Chia sẻ Cache ASP.Net
- 24. Làm thế nào để cache dữ liệu cơ sở dữ liệu vào bộ nhớ để sử dụng bởi ứng dụng MVC?
- 25. Dữ liệu động liên kết dữ liệu
- 26. Mẫu thiết kế dữ liệu/cơ sở dữ liệu?
- 27. mysql profiler "Gửi dữ liệu"
- 28. Dữ liệu tải lại biểu mẫu Django
- 29. dữ liệu URI và bộ nhớ đệm
- 30. Caching dữ liệu người dùng để tránh các chuyến đi cơ sở dữ liệu dư thừa
Tôi cần lấy tệp cấu hình ở định dạng XML, tôi nên sử dụng NSUrlConnection, phải không? – cesarnicola
Vâng, tôi nghĩ bạn nên sử dụng NSUrlConnection và thực hiện asyncrhonous để ngăn chặn việc chặn giao diện người dùng – vodkhang