Модификация 504 неудовлетворительного запроса (только если кэшируется) - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь использовать кэширование, используя Retrofit и OkHttp.

Я добавляю этот перехватчик в конструктор OkHttp следующим образом.

  @Provides
  @Singleton
  @TokenHttpClient
  internal fun provideTokenOkHttpClient(
          @BaseHttpClient okHttpClient: OkHttpClient,
          cacheInterceptor: NetworkCacheInterceptor): OkHttpClient {
    return okHttpClient.newBuilder()
            .addInterceptor(cacheInterceptor)
            .build()

И перехватчик выглядит так:

class NetworkCacheInterceptor(val context: Context): Interceptor {

  @Throws(IOException::class)
  override fun intercept(chain: Interceptor.Chain): Response {

    var response = chain.request()


    response = if (hasNetwork(context))

      response.newBuilder()
        .removeHeader("Pragma")
        .removeHeader("Cache-Control")
        .header("Cache-Control",
          "public, max-age=${CacheControl.Builder().maxAge(30, TimeUnit.DAYS).build()}")
        .build()
    else {

      response.newBuilder()
        .removeHeader("Pragma")
        .removeHeader("Cache-Control")
        .header("Cache-Control",
          "public, only-if-cached, max-stale=${CacheControl.Builder().maxAge(30, TimeUnit.DAYS).build()}")
        .cacheControl(CacheControl.FORCE_CACHE)
        .build()

      response
    }
    return chain.proceed(response)
  }

}

Этот способ реализации позволяет сохранять ответы вcache папка.Но он не работает в автономном режиме.Я устал разделять перехватчики и добавлять кеширование как networkInterceptor и автономный перехватчик как обычный перехватчик, но это не сработало.В этом случае кэш не был сохранен.

Когда я проверяю кэшированные файлы, я вижу следующие заголовки:

GET
0
HTTP/1.1 200 
15
Access-Control-Expose-Headers: value
Cache-Control: no-cache
ETag: "01785cb0981d28aa96d58e491dbd6873e"
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: SAMEORIGIN
Referrer-Policy: no-referrer
Content-Type: application/json;charset=UTF-8
Date: Tue, 21 May 2019 07:50:51 GMT
Transfer-Encoding: chunked
Content-Encoding: gzip
OkHttp-Sent-Millis: 1558425050896
OkHttp-Received-Millis: 1558425050928

Есть идеи?Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...