Я начинаю с кэширования и дооснащения/OKHttp3 в Android. Нам нужно поддерживать автономный режим/сервер для нашего приложения, и я пытаюсь понять, как правильно настроить кеш, чтобы это поддержать. Идея состоит в том, чтобы получить новую копию с сервера, когда она доступна (или 304, если ничего не изменилось). Если сервер выключен или приложение отключено, нам нужно получить кешированный ответ.OKHttp3 max-stale cache
я настроил Cache-контроль, как это:
Cache-Control: no-transform, max-age=0, max-stale=50, private
Это работает довольно хорошо, но то, что я не понимаю, почему OKHttp служит кэшированный ответ, даже если «макс-несвежий» прошло? Я думал, что через 50 секунд я получу 504 - неудовлетворительный запрос, потому что прошел максимальный срок?
Это перехватчик я использую для OKHttp:
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
try {
if (!NetworkUtil.isNetworkAvailable(model.getApplicationContext())) {
return getCachedResponse(chain);
}
Request request = chain.request();
return chain.proceed(request);
} catch (Exception exception) {
return getCachedResponse(chain);
}
}
})
private static Response getCachedResponse(Interceptor.Chain chain) throws IOException {
Request request = chain.request().newBuilder()
.cacheControl(CacheControl.FORCE_CACHE)
.removeHeader("Pragma")
.build();
Response forceCacheResponse = chain.proceed(request);
return forceCacheResponse.newBuilder()
.build();
}
Любые идеи, как настроить кэш, так что он не будет служить в кэше ответа после максимального-несвежий период прошло?
Не забудьте принять свой собственный ответ. :) –