缓存Json / Rest网络响应

时间:2013-06-27 14:04:41

标签: android caching

对于我的Android应用,我希望尽可能降低网络流量(当然)。 我知道HttpResponseCache,但它仅适用于API> = 13,所以它不适合我。

我想到使用LruCache,使用REST Url作为密钥(给定没有POST数据)。 当我从服务器(JSON)收到回复时,我立即使用Gson从中创建POJO。

  • 最好用什么作为价值? JSON字符串,然后使用Gson再次反序列化或存储POJO s?我知道反序列化占用了一点cpu时间,但是将POJO存储在缓存中可能存在缺点吗?

  • 假设我有一个活动,它会显示名为“产品”的POJO内容(我从服务器获取JSON)。关于方向更改,我可以忘记保留产品POJO(通过savedInstanceState或其他),因为再次检索它的网络调用很可能是“免费”的(因为它仍然在缓存中) )?

  • 为不同类型的对象设置单独的缓存或仅使用一个大缓存会更好吗?

  • 有关如何确定缓存的良好大小的任何建议(MiB或只是条目数)

1 个答案:

答案 0 :(得分:2)

一个好的开始是Virgil Dobjanschi的Google I / O 2010关于Android的RESTful模式的讨论:http://www.google.com/events/io/2010/sessions/developing-RESTful-android-apps.html

简而言之,他主张使用SQLite来跟踪HTTP请求的状态并缓存数据以最小化请求。我找到了一个示例实现here,但您可能想要搜索有关该演讲中概述的模式的更多资源。

自从最初回答这个问题以来,已经出现了几个用于处理缓存HTTP请求的Android开源源代码库。 OkHttpVolley是两个可靠的选项。