原始问题贴在
这里
大致说一下:
在使用Volley的时候,发现HttpHeaderParser类中的parseCacheHeaders函数,在解析http header时,会有读取server端设置的max-age值,保存在Cache.Entry中:
Cache.Entry entry = new Cache.Entry();
entry.data = response.data;
entry.etag = serverEtag;
entry.softTtl = softExpire;
entry.ttl = entry.softTtl
entry.serverDate = serverDate;
entry.responseHeaders = headers;
这里entry.softTtl和entry.ttl是同一个值。
在CacheDispatcher类中有两个判断:entry.isExpired()和entry.refreshNeeded(),分别对应上面的entry.softTtl和entry.ttl值。
问题是:
1. 既然entry.softTtl和entry.ttl是同一个值,那为什么后面判断的时候需要有两个?而且分别是处理不同的case?
2. 我想让cache有效期无限长,即一旦本地获取过server端图片后,这个cache就始终有效,不会过期,请问可以实现吗?