2013-08-05 29 views
5

Dịch vụ tôi đang sử dụng để lấy hình ảnh, giống như nhiều trang web như vậy không có tiêu đề kiểm soát bộ nhớ cache cho biết thời gian lưu trữ hình ảnh. Volley sử dụng tiêu đề kiểm soát bộ nhớ cache http theo mặc định để quyết định khoảng thời gian lưu hình ảnh trên đĩa. Làm thế nào tôi có thể ghi đè hành vi mặc định này và giữ những hình ảnh như vậy trong một khoảng thời gian nhất định?Làm cách nào để thay đổi hành vi bộ nhớ cache trên đĩa mặc định?

Cảm ơn

Trả lời

11

Tôi cần thay đổi chiến lược lưu bộ nhớ cache mặc định thành chính sách "cache all" mà không tính đến tiêu đề HTTP.

Bạn muốn lưu vào bộ nhớ cache trong một khoảng thời gian đã định. Có một số cách bạn có thể làm điều này, vì có nhiều nơi trong mã "chạm" phản hồi mạng. Tôi đề xuất chỉnh sửa cho HttpHeaderParser (parseCacheHeaders phương pháp tại dòng 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; 

và một để Cache.Entry lớp:

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

nơi GLOBAL_TTL là một hằng số đại diện cho thời gian bạn muốn mỗi hình ảnh sống trong bộ nhớ cache.

Các vấn đề liên quan