首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android HTTP缓存是如何工作的?

Android HTTP缓存是如何工作的?
EN

Stack Overflow用户
提问于 2014-06-25 14:21:22
回答 1查看 6.1K关注 0票数 12

我一直在研究安卓的毕加索、图像下载和缓存库。我发现他们的缓存机制是基于Android HttpResponseCache的。文件上说:

为了度量缓存的有效性,这个类跟踪三个统计信息:

  • 请求计数:自创建此缓存以来发出的HTTP请求的数量。
  • 网络计数:需要网络使用的请求数量。
  • 命中计数:由缓存提供响应的请求的数量。

那么,Android Http缓存究竟是如何工作的呢?

  • Android是如何知道缓存或不缓存一个文件的,以及缓存时间?
  • 缓存是什么时候被清理的,由谁来清理?
  • 如何用自己的机制覆盖默认的http缓存机制?我该怎么办?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-29 12:34:39

答案在下面。

1)安卓如何知道如何缓存或不缓存文件,以及缓存时间多长?

如果以下所有内容都为真,则HttpResponseCache缓存HTTP或HTTPS响应

  • 它是通过HttpResponseCache.install()安装的
  • setUseCaches(true)HttpURLConnectionHttpsURLConnection上被调用
  • HTTP/HTTPS服务器返回的头允许缓存。有关细节,请参见ResponseHeaders.isCacheable() 实现

缓存使用LRU策略,将旧的缓存响应替换为更新的响应,以确保它不超过分配的磁盘大小。

2)缓存究竟是什么时候被清除的,由谁来清理?

如果缓存是用Context.getCacheDir()Context.getExternalCacheDir()中的目录初始化的,那么在卸载应用程序时通常会删除这些文件。可以通过调用HttpResponseCache.delete()手动删除缓存。

3)如何用自己的机制覆盖默认的http缓存机制?我应该吗?

HttpResponseCache.install()。如果应用程序通过HTTP或HTTPS加载可缓存资源,并且没有自己的缓存层,那么您应该考虑使用它。Android默认的HttpResponseCache实现应该可以正常工作。

请注意,默认情况下不使用缓存。您需要用HttpResponseCache.install()安装一个。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24411236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档