Я работаю с Magento, и есть функция, которая объединяет CSS и Javascript в один большой файл.
Независимо от плюсов и минусов, существует следующая проблема:
Окончательный файл кэшируется на нескольких уровнях, которые включают, но не ограничиваются:
- Amazon CloudFront
- Прокси-серверы
- Кэш браузера клиента
Magento использует сумму MD5 объединенных имен файлов CSS для создания нового имени файла для объединенного файла CSS. Так что каждая страница, имеющая отдельный набор CSS-файлов, получает правильный объединенный CSS-файл.
Чтобы обойти проблему кэширования, я также включил временные метки изменения файла в этот хэш, чтобы каждый раз создавался новый хэш, каждый раз при изменении файла css.
Таким образом, все преимущества нереаливационной оценки кэширования, но если что-то меняется, это видно сразу, потому что ссылка на ресурс изменилась.
Пока все хорошо:
Единственная проблема в том, что имена файлов, которые используются для генерации хэдов, являются только теми, на которые обычно бы напрямую ссылались в блоке HTML-Head, а не include css импорт внутри этих файлов .
Таким образом, изменения в файлах, которые импортируются внутри CSS-файлов, не приводят к новому хешу.
Нет, я действительно не хочу рекурсивно анализировать весь импорт и сканировать его или что-то в этом роде.
Я скорее думал о решении на основе каталогов. Есть ли что-нибудь, чтобы эффективно отслеживать «последнее изменение внутри каталога» в файловой системе?
Мы используем ext4.
Или, может быть, есть другой способ, может быть, с помощью команды find, который выполняет всю работу на основе индексов inode?
Что-то подобное?
Я видел много программ, которые мгновенно «видят» изменения, не сканируя целые файловые системы. Я полагаю, что в Linux также есть демоны наблюдения за манипуляциями с файлами.
Проблема в том, что каталог css довольно большой.
Кто-нибудь может указать мне правильное направление?