2011-01-24 6 views
0

iPhoneのアプリケーションがあります。このアプリケーションは、ページ/画面ごとに25個の製品を表示します。製品名、価格、割引、製品イメージのURLなどのテキスト項目は、すべての25製品のサーバーから最初にダウンロードされます。iPhoneからサーバーに画像をダウンロードするときのパフォーマンス上の問題

その後、25の製品イメージを1つずつダウンロードするように25の同期要求を行います。各画像のサイズは約25KBで、サイズはおよそ300×400ピクセルです。iPhoneに表示するには72×72ピクセルの画像しか必要ありません。 1つの画面/ページを表示するには約40秒かかりますが、この種のパフォーマンスは良くありません。そこで、パフォーマンスを向上させる方法を検討しています。

  1. サーバー上のイメージのサイズを72x72ピクセルに縮小すると、パフォーマンスが向上しますか?
  2. また、サーバーからiPhoneに25枚の画像をすべてダウンロードすることは可能ですか?もしそうなら、それをどうやって行うのか、あなたのアプローチを共有してください。パフォーマンスを向上させることができる場合にのみ、これを実行したいと考えています。

答えて

2

1. 72x72にサイズを変更すると、合計でダウンロードするサイズが小さくなるため、高速です。

2.私は解決策がありませんが、各ファイルに対して非同期要求を作成しようとする可能性があります。ダウンロード中は一時的な画像(ロゴなど)を入れます。イメージがダウンロードされると、新しいイメージで置き換えられます。 イメージをキャッシュに入れて、毎回ダウンロードしないようにすることができます。

非同期ダウンロードでは、ASIHTTPRequest(キャッシュクラスもあります)を使用できます。

同期要求を行うと、GUIは終了するまでフリーズします。

+0

1がそれに私をビートsdwebimageフレームワークを使用することができますかなりのすべてのカウント。 :-) –

+0

これは良いことです。 1回のリクエストで非同期的にダウンロードされるパフォーマンスが大幅に向上しますか?あなたの考えは? – mohang

+0

ASIHTTPRequestはバッチダウンロードを行うことができません(ファイルごとにダウンロード要求を行う必要があります)。それには、ダウンロード要求を追加して処理するキューがあります(正しく覚えていると、一度に処理される要求の最大数を設定できます)。画像のサイズを変更して非同期にダウンロードすると、アプリのパフォーマンスが向上します。 –

0

最初に、サーバー上の画像を拡大縮小することはまったく簡単なことです。絶対に必要なデータをもう一度ダウンロードする必要はありません。

これを実行すれば、パフォーマンスが大幅に向上します。プレースホルダイメージを使用して、実際のイメージをバックグラウンドで非同期にダウンロードすることで、さらに向上させることができます。

最後に、イメージキャッシュを使用し、イメージをローカル(おそらくSQLiteデータベース内の参照)に保存する必要があります。ただし、このファイルをメンテナンスする必要があります。画像は** **あなたが使用することができます。このリンクIOSのサーバからダウンロードするために

関連する問題