Контроль кэша игнорируется

1

В настоящее время я работаю с Retrofit и Okhttp, и я пытаюсь кэшировать некоторые ответы GET. Мой код:

OkHttpClient okHttpClient = new OkHttpClient();
    File cacheDir = new File(System.getProperty("java.io.tmpdir"),
            "ddcache");
    HttpResponseCache cache = new HttpResponseCache(cacheDir, 2024);
    okHttpClient.setResponseCache(cache);
    OkClient cl=new OkClient(okHttpClient);
    restAdapter = new RestAdapter.Builder().setEndpoint(API_URL)
            .setLogLevel(RestAdapter.LogLevel.FULL)
            .setClient(cl).build();

И журнал показывает этот заголовок:

HTTP/1.1 200 OK
Cache-Control: max-age=7200
Connection: Keep-Alive
Content-Type: text/html
Date: Tue, 18 Mar 2014 18:38:16 GMT
Keep-Alive: timeout=3, max=100
OkHttp-Received-Millis: 1395167895452
OkHttp-Response-Source: NETWORK 200
OkHttp-Sent-Millis: 1395167895378
Server: Apache/2.2.26 (Unix)
Transfer-Encoding: chunked
X-Powered-By: PHP/5.3.28

Я проверяю ответ, возвращая время Unix сервера на каждый вызов, и он всегда возвращает новый, что означает

Cache-Control: max-age = 7200

полностью игнорируется. Файл журнала в кэше также обновляется с примечаниями "CLEAN" и "DIRTY", но ничего не кэшируется. Есть ли что-то очевидное, чего я не вижу?

Теги:
http
okhttp

1 ответ

0

Я думаю, что у меня была аналогичная проблема. Размер кеша установлен в килобайтах, и вы устанавливаете его только на 2024 килобайта. Этого недостаточно для почти чего угодно. Попробуйте установить его на "10L * 1024 * 1024" (10Mb) и посмотрите, поможет ли это.

  • 0
    Вы получили хорошее замечание там. Попробую позже и доложу. В настоящее время, используя какой-то нестандартный подход, я не чувствую себя комфортно.
  • 0
    Ты это пробовал? Это была проблема?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню