我一直在研究安卓的毕加索、图像下载和缓存库。我发现他们的缓存机制是基于Android HttpResponseCache的。文件上说:
为了度量缓存的有效性,这个类跟踪三个统计信息:
那么,Android Http缓存究竟是如何工作的呢?
发布于 2014-06-29 12:34:39
答案在下面。
1)安卓如何知道如何缓存或不缓存文件,以及缓存时间多长?
如果以下所有内容都为真,则HttpResponseCache
缓存HTTP或HTTPS响应
HttpResponseCache.install()
安装的setUseCaches(true)
在HttpURLConnection
或HttpsURLConnection
上被调用ResponseHeaders.isCacheable()
实现。缓存使用LRU策略,将旧的缓存响应替换为更新的响应,以确保它不超过分配的磁盘大小。
2)缓存究竟是什么时候被清除的,由谁来清理?
如果缓存是用Context.getCacheDir()
或Context.getExternalCacheDir()
中的目录初始化的,那么在卸载应用程序时通常会删除这些文件。可以通过调用HttpResponseCache.delete()
手动删除缓存。
3)如何用自己的机制覆盖默认的http缓存机制?我应该吗?
见HttpResponseCache.install()
。如果应用程序通过HTTP或HTTPS加载可缓存资源,并且没有自己的缓存层,那么您应该考虑使用它。Android默认的HttpResponseCache
实现应该可以正常工作。
请注意,默认情况下不使用缓存。您需要用HttpResponseCache.install()
安装一个。
https://stackoverflow.com/questions/24411236
复制相似问题