[Android Traffic]重複したダウンロードを避けるためにキャッシュを使用します.

4268 ワード

転載元: http://blog.csdn.net/kesenhoo/article/details/7395817
Redundent Downloads are Redundent[繰り返しダウンロードは冗長です]
  • ダウンロードを減らす最も基本的な方法は、あなたが必要としている「アメリカ人の考えはやはり直接的で、この言葉は面白そうですが、道理があります」だけをダウンロードすることです.データの観点から、前回の更新時間のようなパラメータを伝えることによって、いくつかのデータを調べることができます.
  • 同様に、画像をダウンロードする時、serverの方が画像のサイズを減らすことができます.
  • Cache Files Locally[キャッシュファイルをローカルに]
  • は重複したデータのダウンロードを避けることが重要である.この問題はキャッシュ機構を使用して処理できます.キャッシュされたstaticのリソース、例えば完全な画像.これらのキャッシュのリソースは別々に保存する必要があります.
  • は、キャッシュによる表示が古いデータではないことを保証するために、最新のデータをキャッシュから取得してください.データが失効した場合、更新を促すことがあります.
  • long currentTime = System.currentTimeMillis());  
      
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
      
    long expires = conn.getHeaderFieldDate("Expires", currentTime);  
    long lastModified = conn.getHeaderFieldDate("Last-Modified", currentTime);  
      
    setDataExpirationDate(expires);  
      
    if (lastModified < lastUpdateTime) {  
      // Skip update  
    } else {  
      // Parse update  
    } 
  • は、この方法を使用して、キャッシュ内で常に最新のデータであることを保証することができる.
  • は、外部キャッシュのディレクトリを取得するために、以下の方法を用いることができる.
    Context.getExternalCacheDir();
  • は、内部キャッシュを取得する方法です.メモリに保存されているデータは内部空間が足りないため、消去される可能性があります.
  • Context.getCache();
  • どこに保管されているファイルもappがアンインストールされた時に消去されます.
  • Use the HttpURLConnection Resonse Cache[HttpURLConnection Resonseキャッシュを使う]
  • はAndroid 4.0の中でHttpURLConnectionのためにreponse cacheを追加しました.反射機構を使ってHTTP reponse cacheをオープンできます.以下の例を見てください.
    private void enableHttpResponseCache() {  
      try {  
        long httpCacheSize = 10 * 1024 * 1024; // 10 MiB  
        File httpCacheDir = new File(getCacheDir(), "http");  
        Class.forName("android.net.http.HttpResponseCache")  
             .getMethod("install", File.class, long.class)  
             .invoke(null, httpCacheDir, httpCacheSize);  
      } catch (Exception httpResponseCacheNotAvailable) {  
        Log.d(TAG, "HTTP response cache is unavailable.");  
      }  
    }  
  • 上のsample codeはAndroid 4.0以上のデバイスでreponse cacheを起動し、同時に前のプログラムに影響を与えません.
  • は、cacheがオンされた後、すべてのcacheにおけるHTTP要求に直接にローカル記憶に応答してもよく、新しいネットワーク接続を開く必要はない.
  • cacheされたレスポンスは、serverによって有効期限が切れていないことが確認され、帯域幅が減少します.cachedされていないレスポンスは、次の請求に便利なので、レスポンスcacheに保存されます.
  •  
    後記:Cacheメカニズムは多くの実際のプロジェクトで使われています.実際の操作は複雑で、Cacheの実例を共有したいです.
     
    勉強自:http://developer.android.com/training/efficient-downloads/redundant_レdundent.、ありがとうございます.
    転載は出典を明記してください.ありがとうございます.