2016-03-04 2 views
3

Мне нужно использовать пользовательский OkHttpClient, чтобы я мог добавлять заголовки к запросам изображения. Проблема заключается в том, что Picasso не будет кэшировать любые изображения на диске из-за этого. Я использовал setIndicatorsEnabled(true), чтобы проверить кеширование, и вижу только красные индикаторы. Когда я использую по умолчанию OkHttpDownloader, все в порядке. Ниже приведен код инициализации Picasso. Так кто-нибудь сталкивается с той же проблемой?Picasso не кэширует изображение на диске

public static void init(Context context) { 
     Picasso.Builder builder = new Picasso.Builder(context); 
     OkHttpClient client = new OkHttpClient(); 
     client.interceptors().add(new AuthInterceptor()); 
     Downloader downloader = new OkHttpDownloader(client); 
     Picasso.setSingletonInstance(builder.downloader(downloader).build()); 
     Picasso.with(context).setIndicatorsEnabled(true); 
    } 

Также мое изображение скачать код

public static void load(final ImageView imageView, final Image image) { 
      Picasso.with(imageView.getContext()) 
        .load(image.getUrl()) 
        .resize(400, 0) 
        .memoryPolicy(MemoryPolicy.NO_CACHE) 
        .into(imageView); 
    } 
+0

Почему вы делаете это? .memoryPolicy (MemoryP olicy.NO_CACHE) 'если вы хотите кеш памяти – Bhargav

+0

Я действительно не хочу кэш памяти, я хочу только кэш диска. – HellCat2405

+0

Так как это происходит при смене заголовков, вы, скорее всего, не устанавливаете заголовок 'Cache-Control' – Bhargav

ответ

1

А так как это происходит, когда вы изменяете заголовки, вы, скорее всего, не установки заголовка Cache-Control

По Jake Wharton (Один разработчика Picasso)

У Picasso нет дискового кеша. Он делегирует любой HTTP-сервер , который вы используете для этой функции (полагаясь на кеш HTTP семантика для управления кешем). Из-за этого, поведение вы ищете приходит бесплатно

Взятые от ответа Джейка Уортон here

Кроме того,

Если вы никогда не увидите синий индикатор, вполне вероятно, что ваши удаленные изображения не включают в себя правильные заголовки кеша для включения кэширования на диск

Смежные вопросы