URL-кеш

May 26, 2020 · View on GitHub

Url-кеш - при успешном запросе на сервер кешируется сырой ответ сервера (только для запросов, зарегистрированных в SimpleCacheInfo). Для получения данных из кеша необходимо в метод Api Retrofit'а передать header ключ: BaseServerConstants#HEADER_QUERY_MODE значение: BaseServerConstants#QUERY_MODE_FROM_CACHE. Если кеш пустой, то будет возвращен null.

Логика простого кеша содержится в SimpleCacheInterceptor. Для удаления записей кеша следует получить кеш для соответствующего запроса через SimpleCacheFactory и произвести очистку.

Для конкатенирования данных из кеша и с сервера предусмотрен метод BaseNetworkInteractor#hybridQueryWithSimpleCache. Предусмотрена также возможность иметь один кеш для нескольких запросов.

Для использования неоходимо создать SimpleCacheInterceptor и добавить его в конструктор при создании инстанса OkHttpClient.

Кешированные данные получают через тот же интерфейс Api, который используется Retrofit'ом. Для поддержки кеширования метод в интерфейсе должен выглядеть так:

@GET(SOME_URL)
Observable<SomeResponse> getSomeContent(
            @Header(HEADER_QUERY_MODE) @ServerConstants.QueryMode int queryMode,
            @Path("id") int id);

Кроме того необходимо иметь инстанс класса SimpleCacheInfo для этого запроса. Этот инстанс необходимо зарегистрировать в SimpleCacheStorage. В зависимости от queryMode данные будут запрошены либо с сервера, либо из кеша.

Если очистка кеша необходима при обновлении приложения на новую версию, то соответствующий код необходимо разместить в AppMigrationStorage