Android HTTPcaching如何工作?

我一直在调查Picaso ,图像下载和Android的caching库。 我发现他们的caching机制是基于Android HttpResponseCache的 。 该文件说:

为了衡量caching效率,这个类跟踪三个统计数据:

  • 请求计数:自创build该caching后发出的HTTP请求数。
  • networking计数:需要networking使用的请求数量。
  • 命中计数:响应由高速caching服务的那些请求的数量。

那么Android Httpcaching究竟是如何工作的呢?

  • Android知道如何caching或不caching文件,以及多久?
  • 什么时候清除caching,并由谁?
  • 我怎样才能用我自己的默认HTTPcaching机制? 我应该吗?

Solutions Collecting From Web of "Android HTTPcaching如何工作?"

答案如下。

1)Android知道如何caching或不caching文件,以及多久?

如果满足以下所有条件,则HttpResponseCachecachingHTTP或HTTPS响应

  • 它是通过HttpResponseCache.install()安装的

  • setUseCaches(true)HttpURLConnectionHttpsURLConnection上被调用

  • 由HTTP / HTTPS服务器返回的头允许caching。 有关详细信息,请参阅ResponseHeaders.isCacheable() 实现 。

caching使用LRU策略replace较旧caching的响应,以确保它不超过分配的磁盘大小。

2)什么时候清理caching,以及由谁?

如果使用Context.getCacheDir()Context.getExternalCacheDir()的目录对caching进行初始化,则通常会在卸载应用程序时删除这些文件。 可以通过调用HttpResponseCache.delete()手动删除caching

3)我怎样才能用我自己的默认HTTPcaching机制? 我应该吗?

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

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