Сначала я запрашиваю localhost с кешем
OkHttpClient okHttpClient = new OkHttpClient
.Builder()
.cache(cache)
.build();
final Request request = new Request.Builder()
.url("http://localhost:2333")
.build();
Работает.
<html>
<body>
<p> Hello,web!</p>
</body>
</html>
Затем я изменяю заголовок If-Modified-Since
поверх запроса. Подача возвращает 304
, но тело ответа ничего не возвращает.
final Request request = new Request.Builder()
.url("http://localhost:2333")
.header("If-Modified-Since","Wed, 21 Oct 2015 07:28:00 GMT")
.build();
На мой взгляд, он должен вернуть тот же результат из кеша, как показано ниже:
<html>
<body>
<p> Hello,web!</p>
</body>
</html>
Затем я следую исходному коду, в CacheStrategy.java
.
...
if (requestCaching.noCache() || hasConditions(request)) {
return new CacheStrategy(request, null);
}
...
private static boolean hasConditions(Request request) {
// if-last-modified timestamp etag hash(xx)
return request.header("If-Modified-Since") != null || request.header("If-None-Match") != null;
}
Итак, мне интересно, смогу ли я изменить If-Modified-Since
?
Если я могу изменить If-Modified-Since
, тогда результат должен использовать кеш, если я не могу изменить If-Modified-Since
, тогда нам не нужен этот код if (requestCaching.noCache() || hasConditions(request))
.