CSS Parser - Вставка mtimes
Какой инструмент командной строки я могу использовать для автоматической вставки mtimes в URL-адреса в моих css-файлах с целью нарушения кеша?
/* before */
.example { background: url(example.jpg); }
/* after */
.example { background: url(example.jpg?1271298451); }
Кроме того, я хотел бы, чтобы этот инструмент выкладывал последние mtime в виде файлов ctime mtime. (Если файл css все еще кэшируется, то новые URL-адреса не попадут на клиент.)
В поиске в Интернете я нашел очень мало инструментов, которые могут это сделать. Я даже думаю о том, чтобы катиться самостоятельно, но нашел очень мало способов синтаксического анализа CSS, которые активно поддерживаются. Кандидат должен быть:
- быстро (я не хочу ждать 30 секунд при развертывании)
- доступная командная строка (что-то вроде "cat foo.css bar.css | cssmtime > out.css")
Что я нашел до сих пор
- Компрессор yui - изначально я думал, что для этого расширю компрессор yui, но обнаружил, что он реализован в виде набора регулярных выражений, а не парсера.
- csstidy - последний выпуск был в 2007 году, и разработка была приостановлена, но у него есть опция для вставки mtimes (также написана на php, что у меня нет опыта)
- cssutils - реализация python sac - кажется, активно поддерживается, но также кажется излишним для моих нужд. Кроме того, написано на Python, с которым у меня есть опыт работы
- csspool - реализация ruby sac - я не знаю много ruby, но хотел бы узнать
- другие реализации sac - есть несколько реализаций java и реализация ac, о которых я не знаю много
Какой у тебя опыт?
Вы использовали какую-либо из этих библиотек? Был ли опыт положительным? Вы бы порекомендовали мне пойти с ними в моих целях?
1 ответ
Если вы можете использовать свой собственный метод, вы можете сделать это простым поиском / заменой, не требуя сложного разбора здесь. Например, если вы указали, какие файлы необходимо повторно кэшировать, добавив строку запроса самостоятельно, вы должны сделать это:
.example { background: url(example.jpg?<MTIME>); }
Тогда ваш код просто нужно найти <MTIME>
и заменить. Это будет примерно так же быстро, как вы сможете получить, и даст вам контроль над изображениями, которые требуют повторного кэширования, и теми, которые этого не требуют.