если в CacheStrategy.java есть какие-то проблемы с If-Modified-Since? - PullRequest
0 голосов
/ 11 января 2019

Сначала я запрашиваю 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)).

...