Contenu du post
🤖TLRU — эволюция LRU-кэша с учётом времени Стандартный LRU-кэш не знает ничего о времени — он выбрасывает записи только когда заканчивается место. Поэтому в дисковом кэше Glide могут месяцами лежать устаревшие изображения, пока не будет достигнут лимит размера. Команда Grab описала подход TLRU (Time-Aware LRU) — форк DiskLruCache с тремя дополнительными параметрами: 1️⃣TTL — время жизни записи. Если (текущее_время - время_последнего_доступа) > TTL, запись удаляется 2️⃣Минимальный порог — защита от полного сброса. Если пользователь долго не заходил и все записи устарели, кэш всё равно не очищается полностью — иначе при возвращении все изображения загружались бы заново 3️⃣Максимальный размер — наследуется от LRU без изменений Реализация аккуратная: метка времени последнего доступа хранится прямо в journal-файле, переживает перезапуски. Алгоритм оптимизирован — если самая старая запись ещё не устарела, остальные не проверяются. Миграция со старого LRU безопасна в обе стороны: оригинальный DiskLruCache читает TLRU journal, просто игнорируя временны́е суффиксы. Мне нравятся такие решения, когда не надо переписывать с нуля, а точечно расширить проверенную реализацию. Три параметра поверх существующего механизма — и кэш наконец умеет забывать ненужное. Ну и честно - решение лежало на поверхности и вполне логичное. 🔗 Источник: engineering.grab.com #Android#AndroidDev#Производительность#Оптимизация