2015-06-04 3 views
0

Я использую Parse и Picasso для загрузки изображений в ParseImageViews. Есть ли что-то, что мне не хватает для кэширования файлов синтаксического анализа? Кажется, что мой список просматривает файл с сервера каждый раз и использует кэш диска, который поставляется с Picasso.Как использовать кеш диска для кэширования ParseFile

Я не вижу кэш-контроля: параметр максимального возраста в HTTP ответов загрузок файлов синтаксического анализа (от амазонки s3, где разбор хранит их)

У меня есть следующий код,

final ParseImageView pic = viewHolder.img; 
    pic.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
    ParseFile f = parseObject.getParseFile("image"); 
    Picasso.with(mContext).load(f.getUrl()).into(pic); 

Любая помощь будет оценена по достоинству. Благодарю.

+0

сохранить его в stoarage? – Elltz

+0

@Elltz, что ты имел в виду? Извините, я новичок в Parse – user3030130

+0

. Я имею в виду, что у вас есть 'parseFile'' f', поэтому сохраните его во внутреннем хранилище, и когда вам это нужно, вы не получите его снова в Интернете – Elltz

ответ

0

Использование OkHttp клиента в качестве HTTP транспорта для Пикассо и указать диск и кэш-память размер: запрос

OkHttpClient okHttp = new OkHttpClient(); 

Cache cache = new Cache(ctx.getCacheDir(), cacheSize); 

okHttp.setCache(cache); 

// Use OkHttp as downloader 
Downloader downloader = new OkHttpDownloader(okHttp); 

mPicasso = new Picasso.Builder(getApplicationContext()) 
    .downloader(downloader)).memoryCache(new LruCache(size)).build(); 

Setup перехватчик (пример) для OkHttp клиента:

// Add Cache-Control to origin response (force cache) 
client.networkInterceptors().add(new Interceptor() { 

    private com.squareup.okhttp.Request request; 
    private Response response; 
    private String requestUrl; 

    @Override 
    public Response intercept(Chain c) throws IOException { 
     request = c.request(); 

     response = c.proceed(request); 

     if (!request.cacheControl().noStore() 
       && !response.cacheControl().noStore()) { 

     requestUrl = request.urlString(); 

     // Do not cache keys or playlists 

      response = response 
      .newBuilder() 
      .header("Cache-Control","public, max-age=42000").build(); 

     } 

     return response; 
    } 
    }); 
Смежные вопросы