2013-08-05 6 views
5

多くのそのようなサイトのように、私がイメージを取得するために使用しているサービスには、イメージをキャッシュする期間を示すキャッシュコントロールヘッダーがありません。 Volleyは、デフォルトでhttpキャッシュ制御ヘッダーを使用して、ディスクにイメージをキャッシュする時間を決定します。どのようにしてこのデフォルトの動作を無効にし、設定された時間の間、そのようなイメージを保持できますか?私は、アカウントにHTTPヘッダを取ることなく、「キャッシュのすべての」ポリシーにデフォルトのキャッシュ戦略を変更するために必要なvolleyのデフォルトのディスクキャッシュ動作を変更するにはどうすればよいですか?

おかげ

答えて

11

設定した期間キャッシュします。これにはいくつかの方法があります。コード内にネットワークレスポンスに「触れる」場所がたくさんあるためです。 Cache.Entryクラスへ

Cache.Entry entry = new Cache.Entry(); 
entry.data = response.data; 
entry.etag = serverEtag; 
entry.softTtl = softExpire; 
entry.ttl = now; // **Edited** 
entry.serverDate = serverDate; 
entry.responseHeaders = headers; 

と別:GLOBAL_TTLあなたは、各画像の住むたい時間を表す定数である

/** True if the entry is expired. */ 
public boolean isExpired() { 
    return this.ttl + GLOBAL_TTL < System.currentTimeMillis(); 
} 

/** True if a refresh is needed from the original data source. */ 
public boolean refreshNeeded() { 
    return this.softTtl + GLOBAL_TTL < System.currentTimeMillis(); 
} 

私は(ライン39でparseCacheHeaders方法)HttpHeaderParserに編集を提案しますキャッシュ。

関連する問題