【问题标题】:OkHttp and Retrofit - implicit response caching?OkHttp 和 Retrofit - 隐式响应缓存?
【发布时间】:2018-07-17 16:50:08
【问题描述】:

我正在使用 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)

我正在使用依赖于 OkHttp 3.8.0 的 Retrofit 2.3.0

【问题讨论】:

    标签: caching retrofit okhttp3


    【解决方案1】:

    原来它确实是服务端缓存。在模拟 GPRS 的网络节流的模拟器上测试这一点非常明显。

    我把这个问题留在这里以备将来参考。

    【讨论】:

      猜你喜欢
      • 2015-07-05
      • 2016-09-23
      • 1970-01-01
      • 2017-05-25
      • 2023-03-16
      • 2018-06-19
      • 1970-01-01
      • 2017-12-29
      • 2016-02-18
      相关资源
      最近更新 更多