Android HTTP缓存如何工作?

Ily*_*man 11 android caching picasso

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

为了测量缓存有效性,该类跟踪三个统计信息:

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

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

  • Android如何知道缓存或不缓存文件,以及持续多长时间?
  • 什么时候清理完整的缓存,由谁?
  • 如何用我自己的覆盖默认的http缓存机制?我应该吗?

HHK*_*HHK 11

答案如下.

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

所述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().