2011-01-08 4 views
1

私はいくつかのJSONレスポンス文字列をキャッシュに入れようとしていますし、期限が切れる時期も知っています(アプリケーションは私のWebサービスと通信しています)。私はどこか(キー= URL、値= {JSONコンテンツ+は日付を期限切れ})キーと値のペアを格納したい、と私は、これらのオプションを持っていると思う:getCacheDir(によって取得キャッシュフォルダ内AndroidアプリでJSONをどのくらいキャッシュすればよいですか?

  • 店) - ドキュメントキャッシュファイルで消費するスペースの量には、1MBなどの妥当な最大値を常に設定する必要があります。
  • SDカードのフォルダに保存します(どのフォルダですか?/sdcard/.temp?)ここで合理的です4 MB? 16 MB
  • SQLiteデータベースに格納 - ここでは、内部ストレージの1 MBの制限もOKで、SDカードのサイズはどのくらいですか?

または、ユーザーがキャッシュの場所とサイズを選択できるように、アプリの環境設定のどこかにコンボボックスを配置する必要がありますか?

related question

答えて

1

あなたのJSONレスポンスが非常に大規模でない限り、私は提案として1メガバイトの下に滞在し、内部キャッシュに格納すると思います。

多くのAndroidフォンには、付属の2GB MicroSDカードが同梱されています。私はあなたがSDカードのルートを選択した場合、多くの問題なしで64MBに幸せに行くことができると思います。可能であれば、getExternalFilesDirを使用することをおすすめします。

+0

でも、応答は平均6.5 kbの大きさですが、50 kbほどのものもあります。 JSONを* java.util.zip * -pedすれば、内部ストレージに約4MB相当のものを入れることができます。 – Axarydax

+0

4MBの圧縮されたJSONデータでさえ私には大変なようです。キャッシュがどれくらい大きなものを保持しようとしているかを選ぶことができるように、ユーザーの好みを追加するといいでしょう。つまり、Googleの提案ごとに1MB、またはあなたが言うように4MBです。各レスポンスには有効期限がありますが、キャッシュを小さくして管理しやすいように、有効期限が切れる前にキャッシュから古いデータを削除することをお勧めします。これは、すべてのキャッシュされたファイルを作成日順に並べ、累積サイズが指定された量を下回るまで古いものを1つずつ削除することによって行うことができます。 – Dave

+0

いいえ、4 MBの意味では、1 MBの内部ストレージにGZIPを搭載した4 MBのJSONをパックできます。キャッシュは、あなたが言うように、制限を守るために最も古い(アクセスによる)エントリを削除することで回転します。 – Axarydax

関連する問題