在Retrofit2安卓系统中使用“ If-Modified-Since and Last-Modified”

时间:2019-01-18 21:51:21

标签: android retrofit2

我在获取改造实例时启用了缓存:

httpClient = new OkHttpClient.Builder()
                .connectTimeout(5000, TimeUnit.MILLISECONDS)
                .readTimeout(30000, TimeUnit.MILLISECONDS)
                .writeTimeout(30000, TimeUnit.MILLISECONDS)
                .cache(new Cache(context.getCacheDir(),CACHE_SIZE_BYTES))
                .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.HEADERS))
                .build();

但是我仍然从服务器收到200响应码。 OkHttp日志:

<-- 200 https://--------------------------------------------(586ms)
2019-01-19 08:02:05.415 22042-22069/? D/OkHttp: content-type: application/json
2019-01-19 08:02:05.415 22042-22069/? D/OkHttp: content-length: 1343085
2019-01-19 08:02:05.416 22042-22069/? D/OkHttp: accept-ranges: bytes
2019-01-19 08:02:05.416 22042-22069/? D/OkHttp: server: nginx/1.10.3
2019-01-19 08:02:05.416 22042-22069/? D/OkHttp: date: Fri, 18 Jan 2019 21:01:58 GMT
2019-01-19 08:02:05.416 22042-22069/? D/OkHttp: last-modified: Wed, 16 Jan 2019 21:12:31 GMT
2019-01-19 08:02:05.416 22042-22069/? D/OkHttp: etag: "5c3f9e3f-147e6d"
2019-01-19 08:02:05.416 22042-22069/? D/OkHttp: strict-transport-security: max-age=63072000
2019-01-19 08:02:05.416 22042-22069/? D/OkHttp: x-frame-options: DENY
2019-01-19 08:02:05.416 22042-22069/? D/OkHttp: x-content-type-options: nosniff

我注意到日志中没有Cache-Control标头。

StackOverflow回答说Cache-Control标头需要正确配置才能正常工作。 如何在通话中启用Cache-Control?

  • 我在api调用上使用了@Headers装饰器。

    @Headers({"Cache-Control: private, must-revalidate"})
    @GET("data/taxonomies/categories.json")
    Single<CategoriesWrapper> getCategories();
    

但是在那之后,我得到了相同的日志。我现在没有想法了。在服务器端是否需要设置某些内容,还是仅在客户端某个地方出现问题?

0 个答案:

没有答案