Перейти к содержанию

Кэш дерева и повторный скан

DiskScope сохраняет последнее дерево скана, чтобы повторный скан без изменений занимал секунды.

Как это работает

  1. После успешного скана дерево, настройки и текущий FSEvents event ID сохраняются в ~/Library/Application Support/DiskScope/scan-cache.plist.
  2. При повторном скане DiskScope проверяет версию формата, версию приложения, корень, том, minimumFileSize и treatsPackagesAsSingleItems.
  3. Затем запрашивает FSEvents с сохранённого event ID:
  4. нет значимых изменений → дерево берётся из кэша;
  5. новые, удалённые или изменённые файлы → полный скан.
  6. После полного скана кэш перезаписывается; старый файл не растёт.

Каталог ~/Library/Application Support/DiskScope исключается из скана, чтобы кэш не учитывал сам себя.

Инвалидация

Кэш считается недействительным, если изменились:

  • версия формата кэша;
  • CFBundleShortVersionString или CFBundleVersion;
  • корневая папка или UUID тома;
  • minimumFileSize или treatsPackagesAsSingleItems;
  • файловая система сообщила о новых/удалённых/изменённых путях.

При недоступном FSEvents выполняется обычный полный скан.

Очистка

Настройки → Сканирование → Кэш дерева скана → Очистить. Кэш также можно удалить вручную:

rm ~/Library/Application\ Support/DiskScope/scan-cache.plist

Ограничения

  • Хранится один последний корень; смена папки перезаписывает кэш.
  • При любом изменении выполняется полный скан, а не частичное обновление поддеревьев; это гарантирует корректные суммы.
  • Кэш может занимать десятки мегабайт на миллионах узлов.
  • В кэше есть имена и размеры файлов; он хранится только локально.