我正在使用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
答案 0 :(得分:0)
原来它确实是服务端缓存。在模拟器上进行测试,网络受限制以模拟GPRS,这一点非常明显。
我将此问题留待此处以供将来参考。