Влияние настройки пользовательского кэша HTTP-клиента на клиенте Picasso

#android #picasso #okhttp

#Android #picasso #okhttp

Вопрос:

Я использую Picasso для загрузки изображений и использую пользовательскую реализацию клиента загрузки OkHttp, в которой мы создали пользовательский кеш размером около 153 МБ. Мне интересно, переопределит ли это кэш памяти по умолчанию, который Picasso имеет 15% от выделенной оперативной памяти на устройстве.

Ответ №1:

Настройка дискового кэша HTTP-клиента не влияет на кэш памяти Picasso.

Дисковый кэш внутри OkHttp кэширует необработанные ответы, полученные при выполнении HTTP-запросов. Он делает это в соответствии с заголовками HTTP-кэширования, которые возвращаются в ответах, и сохраняет их в LRU в файловой системе. Поскольку ответы хранятся в виде непрозрачных байтов, это загружаемые полноразмерные изображения.

Picasso имеет кэш памяти, в котором хранятся декодированные и преобразованные изображения. Это результат запроса запроса HTTP-клиенту и декодирования байтов, которые он возвращает (либо из дискового кэша, либо из сети) в Bitmap объект. Эти объекты также хранятся в LRU, но в памяти.

Эти два уровня кэширования вообще не взаимодействуют друг с другом. Таким образом, определение пользовательского HTTP-кэша никак не повлияет на кэш памяти, точно так же, как изменение конфигурации кэша памяти не повлияет на работу HTTP-кэша.