2013-08-05 12 views
5

Der Dienst, den ich verwende, um Bilder zu erhalten, wie viele solcher Seiten, hat keinen Cache-Steuerkopf, der anzeigt, wie lange das Bild zwischengespeichert werden sollte. Volley verwendet standardmäßig einen HTTP-Cache-Steuerkopf, um zu entscheiden, wie lange die Bilder auf dem Datenträger zwischengespeichert werden. Wie kann ich dieses Standardverhalten außer Kraft setzen und solche Bilder für einen bestimmten Zeitraum behalten?Wie kann man das Standardverhalten des Festplattencaches in Volley ändern?

Dank

Antwort

11

I benötigt, um die Standard-Caching-Strategie zu einer „Cache all“ Politik zu ändern, ohne zu berücksichtigen, die HTTP-Header.

Sie möchten für einen bestimmten Zeitraum zwischenspeichern. Es gibt mehrere Möglichkeiten, dies zu tun, da es viele Stellen im Code gibt, die die Netzwerkantwort "berühren". Ich schlage vor, eine Bearbeitung auf die HttpHeaderParser (parseCacheHeaders Methode in Zeile 39):

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; 

und andere zu Cache.Entry Klasse:

/** 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(); 
} 

wo GLOBAL_TTL eine Konstante ist, die die Zeit, die Sie jedes Bild wollen leben in der Cache.

Verwandte Themen