OkHttp和Retrofit - 隐式响应缓存?

时间:2018-02-07 11:50:39

标签: caching retrofit okhttp3

我正在使用Retrofit与简单的REST API进行通信。我知道可以将OkHttp配置为使用缓存,据我所知,只要你明确地给它一个缓存(例如LruCache),就应该只有响应缓存。

在我的情况下,如果服务器不允许缓存,响应到达大约需要5秒钟。但是如果启用Cache-Control: max-age=300,响应到达大约需要50毫秒。

所以我的问题很简单:我没有得到什么?缓存在哪里? OkHttp还有一些隐式响应缓存吗?

或者更明显的替代方案:这真的是服务器端缓存吗?

val okHttpClient = OkHttpClient.Builder()
      .connectTimeout(CONNECTION_TIMEOUT_MS, TimeUnit.MILLISECONDS)
      .readTimeout(READ_TIMEOUT_MS, TimeUnit.MILLISECONDS)
      .writeTimeout(WRITE_TIMEOUT_MS, TimeUnit.MILLISECONDS)
      .build()

val retrofit = Retrofit.Builder()
      .baseUrl(endpoint)
      .client(okHttpClient)
      .addConverterFactory(GsonConverterFactory.create())
      .build()
service = retrofit.create<RetrofitService>(RetrofitService::class.java)

我正在使用Retrofit 2.3.0,它取决于OkHttp 3.8.0

1 个答案:

答案 0 :(得分:0)

原来它确实是服务端缓存。在模拟器上进行测试,网络受限制以模拟GPRS,这一点非常明显。

我将此问题留待此处以供将来参考。