А по-подробнее можно? Каким образом там уменьшится количество тайлов?
По-подробнее: при моих размерах кеша (десятки миллионов файлов) уменьшение их количества прибл. в 100 раз
сняло бы большинство проблем с копированием, бэкапом и т.д.
Этого можно добиться упаковкой всех файлов каждого терминального подкаталога в 1 - если каталог полностью заполнен, их там 1000, так что среднего уменьшения в 100 раз добиться вполне возможно.
Упаковку я бы хотел делать в специальный формат, в котором можно было бы легко определить, есть тайл или нет.
В общих чертах, это заголовок, массив из 1024 смещений на данные тайлов и сами данные (атрибуты+файл).
При этом я бы хотел разделить закачку тайлов и создание кеша, поскольку дергается он часто, и если вылетит ошибка файловой системы, то перезакачивать придется дост. много.
Поэтому предполагаемая схема работы такая:
Во время закачки:
на чтение тайла - сначала смотрим, есть ли файл в каталоге, затем есть ли кеш в каталоге и есть ли в нем тайл;
на запись - так же, как сейчас, ничего не меняется;
на удаление тайла - тут придется дергать кеш - чистим смещение в массиве и выставляем dirty-флаг в заголовке кеша.
Соответственно отдельно создание кеша - проходим все подкаталоги, и если находим новые файлы картинок или грязный кеш, то пересохраняем. Вот такую программку я отдельно могу написать за час-полтора, только надо определиться с атрибутами файлов, которые надо в кеше хранить.
А так кеш получается совместимым с текущим (нет файла кеша, и не надо), и все, что мне надо от САС, - определиться,
куда вставить чтение тайла из кеша. Ну и для оптимизации еще неплохо кешировать последний открытый кеш, и закрывать его при выходе из программы.
Коммит с Беркли попробую поизучать, спасибо