Кто-нибудь мог решить проблему кеширования при загрузке изображений с AWS S3?Проблемы с кешем Пикассо с AMAZON S3
Я использую OKHttpClient и все, что Jazz, но он выглядит как cacheControl или что-то еще не проверяет изменения в заголовках ETag и LAST_MODIFIED. Он всегда берет кешированную версию.
Я инициализации Пикассо так:
OkHttpClient client = new OkHttpClient();
Picasso.Builder builder = new Picasso.Builder(appContext).downloader(new OkHttpDownloader(client));
Picasso built = builder.build();
Picasso.setSingletonInstance(built);
И заголовки ответа выглядеть так:
D/OkHttpDownloader: x-amz-id-2: gWhBHQvzDw1RFDteg8uxvq02XfaB6SySgMgKMk45x2E6An245Bl0OjgYgKsHMxzkVm2nF4GPwRI=<br/>
D/OkHttpDownloader: x-amz-request-id: D80E5602FF3E6002
D/OkHttpDownloader: Date: Tue, 17 Nov 2015 14:46:02 GMT
D/OkHttpDownloader: Last-Modified: Sun, 01 Nov 2015 15:39:41 GMT
D/OkHttpDownloader: ETag: "2a082d4f2d42de95cc1b673a7742fec3"
D/OkHttpDownloader: Accept-Ranges: bytes
D/OkHttpDownloader: Content-Type: image/png
D/OkHttpDownloader: Content-Length: 798624
D/OkHttpDownloader: Server: AmazonS3
D/OkHttpDownloader: OkHttp-Selected-Protocol: http/1.1
D/OkHttpDownloader: OkHttp-Sent-Millis: 1447771561871
D/OkHttpDownloader: OkHttp-Received-Millis: 1447771562179
Edit:
Ok. После добавления заголовка управления кэшем в запрос объекта put («must-revalidate» было моим оружием выбора), он частично решил проблему.
Для того, чтобы заставить запущенное приложение, чтобы обновить заменяемый образ, который я должен был сопровождать, что со следующим:
// Remove from memory cache
Picasso.with(appContext).invalidate(imageUrl);
// Remove from disc cache
Iterator<String> it = okHttpClient.getCache().urls();
while(it.hasNext()){
String currentUrl = it.next();
if(currentUrl.equals(imageUrl)){
it.remove();
break;
}
}
// Update cache with new image
Picasso.with(appContext).load(imageUrl).fetch();