(Android) Кеширование OkHttpClient на основе URL-адресов (разное кеширование для разных URL-адресов) - PullRequest
3 голосов
/ 07 мая 2020

Для Android приложений, можно ли установить разное время кеширования для разных URL-адресов с помощью OkHttpClient?

например, у меня есть два URL-адреса:

  1. http://www.example.com/getcountries.php

  2. http://www.example.com/getnews.php

для первого URL-адреса, я хотел бы установить кеширование на 365 дней:

Request request = new Request.Builder()
    .cacheControl(new CacheControl.Builder()
        .maxStale(365, TimeUnit.DAYS)
        .build())
    .url("http://www.example.com/getcountries.php")
    .build();

для второго url, я бы хотел установить кеширование на 3 минуты:

Request request = new Request.Builder()
    .cacheControl(new CacheControl.Builder()
        .maxStale(3, TimeUnit.MINUTES)
        .build())
    .url("http://www.example.com/getnews.php")
    .build();

будет ли работать? (с кэшированием отладка затруднена).

Спасибо за вашу поддержку.

1 Ответ

1 голос
/ 07 мая 2020

Это будет работать, но я думаю, вам нужен max-age, а не max-stale. Кэшированный ответ, записанный во время a , будет обслуживаться до времени b , времени, которое определяется заголовками ответа. Значение, указанное вами в max-stale , добавляется к b , чтобы продлить время жизни кэшированного ответа. Значение, указанное вами в max-age , добавляется к a , чтобы ограничить срок действия кешированного ответа.

https://square.github.io/okhttp/4.x/okhttp/okhttp3/-cache-control/-builder/

...