緩存iOS應用中通過Web服務連接到數據源的數據的最佳做法是什麼?什麼是緩存數據的最佳實踐?
回答
你應該注視NSCache
的NSCache對象是一個集合類的容器,或高速緩存,這 保存鍵 - 值對,類似的NSDictionary類。開發人員通常將緩存合併到臨時存儲對象中,這些對象的創建過程非常昂貴。重用這些對象可以提供 的性能優勢,因爲它們的值不必重新計算 。但是,這些對象對於應用程序 並不重要,如果內存不足,可以將其丟棄。如果丟棄,則需要重新計算它們的值 。
取決於數據
二進制數據(文件)類型:
- 使用NSFileManager
和NSData writeToFile:
數據的小ammounts(ASCII/UTF8)緩存緩存文件夾中的文件:
- 使用NSUserDefaults
用於數據的大ammounts(ASCII/UTF8):
- 使用sqlite3數據庫
這取決於您要緩存多少數據,以及一旦您緩存了多少數據,以及您將如何訪問它以及一堆其他緩存管理問題。
如果您有少量數據,可以將其存儲在字典或數組中,然後將其寫入並讀入。但是,如果您有大量數據,這種解決方案可能會變得緩慢;這些讀寫操作可能需要很長時間。並且將髒緩存清理到磁盤意味着寫入整個對象。
您可以編寫單個文件,但是如果您有很多文件可能會成爲性能問題,也是如此。
另一種選擇是使用CoreData。如果你有很多數據(比如說很多對象),那麼定義那些看起來像CoreData實體的東西是有意義的。然後,只需要存儲和獲取對象,如果數據不是本地的,則會退回到從Web服務獲取(然後緩存)。您還可以使用CoreData輕鬆高效地優化其他緩存管理任務(如過期未使用的條目)。
我其實走了這條路,有幾個不同的應用程序。我從一個NSDictionary開始,並且變得很慢。我轉而使用CoreData,這不僅簡化了我的許多代碼以進行緩存初始化和管理,而且使應用程序在此過程中獲得了性能提升。
如果您使用NSURLConnection的,或使用的NSURLRequest什麼,緩存已經是照顧你:
默認情況下,這些使用的緩存策略該協議對於Web服務來說就是它返回的HTTP頭。 ASIHttpRequest的IIRC也是如此。
核心數據還實現了自己的行和對象緩存,效果很好。因此,這裏的現實是,當涉及到這些事情時,您實際上不需要擔心緩存 - 它正在優化對NSDateFormatter等事物的使用,這些事情開始變得重要(它們創建起來非常昂貴,而不是線程安全等。 ..)
而且如果有疑問,請使用儀器查找瓶頸和延遲
- 1. 實現緩存層的最佳實踐是什麼?
- 2. 緩存 - 最佳實踐
- 3. 緩存最佳實踐
- 4. 最佳實踐緩存:單片緩存數據與細粒度緩存數據
- 5. 緩存實施的最佳實踐
- 6. 實現緩存的最佳實踐
- 7. 實施數據庫修訂的最佳實踐是什麼?
- 8. PHP中的最佳實踐是什麼?
- 9. 窯庫的最佳實踐是什麼?
- 10. 什麼是您的CoreLocation最佳實踐?
- 11. 授權的最佳實踐是什麼?
- 12. 緩存管理的最佳實踐
- 13. 關於存儲和緩存響應,處理oEmbed的最佳實踐是什麼?
- 14. 存儲數據的最佳實踐
- 15. 什麼是MEF最佳實踐?
- 16. CSS3 - 性能最佳實踐是什麼?
- 17. 表架構,最佳實踐是什麼?
- 18. 什麼是AJAX最佳實踐?
- 19. 什麼是.htaccess RewriteRule最佳實踐?
- 20. MySQL索引 - 什麼是最佳實踐?
- 21. 什麼是最佳實踐System.Web.Mvc ViewModels
- 22. 什麼是一些OOoBasic最佳實踐?
- 23. 什麼是一些Sharepoint最佳實踐?
- 24. register_shutdown_function() - 什麼是最佳實踐?
- 25. 設計Cassandra數據模型的最佳實踐是什麼?
- 26. 在Backbone Marionette中加載數據的最佳實踐是什麼?
- 27. 數據庫設計的最佳實踐是什麼?
- 28. 什麼是數據庫查詢的最佳實踐?
- 29. 連接到SQL數據庫的最佳實踐是什麼?
- 30. 本地數據庫緩存的最佳實踐?
nsuserdefaults和plists可以根據需要使用。 – rishi