Когда Пикассо обновляет кеш изображений

Я использую picasso для получения изображений с сервера.

Это то, что я использую.

            Picasso.with(getApplicationContext()).load(imageURL)
                    .placeholder(R.drawable.card_loading)
                    .fit().centerCrop()
                    .into(imageView);

Вышеприведенный код должен cache изображения, но когда я обновляю то же изображение на сервере, не меняя его URL, он начинает отображать новое изображение в приложении, тогда как он должен отображать cached старое изображение в приложении.

На некоторых устройствах отображались старые изображения, я закрывал и перезапускал приложение несколько раз, после чего оно начинало отображать новые изображения и на этих устройствах.

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


person dev90    schedule 04.04.2018    source источник


Ответы (1)


Я не уверен, как долго действителен файл кеша. Но вы можете изменить действительность файла кеша с помощью заголовка входящего ответа http. По сути, вы можете создать перехватчик и добавить новый заголовок с именем «Cache-Control».

 OkHttpClient httpClient = new OkHttpClient();
    httpClient.networkInterceptors().add(new Interceptor(){

        @Override
        public Response intercept(Chain chain) throws IOException {
            Response originalResponse = chain.proceed(chain.request());
            return originalResponse.newBuilder().header("Cache-Control", "max-age=" + (60 * 60 * 24 * 365)).build();
        }
    });

После этого вы можете передать его picasso в качестве http-клиента.

person gokhan    schedule 04.04.2018
comment
Спасибо gokhan Должен ли я передать httpClient в picasso вот так; Picasso picasso = new Picasso.Builder(context) .downloader(new OkHttp3Downloader(client)) .build(); - person dev90; 04.04.2018