HandyCache/ToDo/Index Files
< HandyCache | ToDo
Создание индексных файлов для ускорения работы с дисковым кэшем и хранения дополнительных атрибутов
правитьПредпосылки создания индексов, а не NTFS-потоков или парных файлов-паспортов:
править- Создание индексов позволит по мере необходимости загружать их в память и проверять наличие файлов в кэше и их атрибутов без обращения к диску, что ускорит работу HC;
- Индексирование должно работать на всех операционных и файловых системах без ограничений:
Пожелания:
править- При первом запросе файлов сайта загружать индекс в память и временами сохранять его на диск. При отсутствии запросов в течение n минут выгружать неиспользуемый индекс из памяти; (Линк)
- Для уменьшения размера индекса не хранить в нем "лишних" данных. Например, пользователей пусть хранит "Историк", "Content-Type" не нужен для известных форматов, даты доступа хватит одной на папку и т.д. (Линк)
- Предпочтительно создавать по отдельному индексу на корневую папку сайта (хоста) в кэше. Это лучше, чем постоянно лопатить один большой индекс. Удаление одной папки или порча ее индекса не приведет к утрате всей информации по кэшу; (Линк)
- Для защиты от случайного удаления/порчи индексов предусмотреть возможность создания резервных копий. При порче индекса предусмотреть возможность его восстановления из резерва, либо по файлам в кэше с восстановлением возможных атрибутов. Сохранять на диск признак открытия индекса, чтобы в случае ненормального завершения работы HC (зависания) при перезапуске проверить "плохие" индексы по файлам кэша;
- Для копирования индексов с разных компьютеров предусмотреть возможность уникальных названий (например, index1.idx, index2.idx и т.д.). При наличии после копирования кэша 2-х таких индексов в одной папке производить их слияние в один общий; (Линк)
Что хранить в индексе:
править- URL;
- Дату модификации файла (для быстрой проверки "критерия свежести" и формирования заголовка "If-Modified-Since");
- Дату доступа к папке с файлами (для чистки кэша от "старых" файлов);
- "Content-Type" для неизвестных HC форматов (для заголовочных правил и формирования ответа HC при загрузке из кэша).