CSS Parser - Вставка mtimes - PullRequest
       1

CSS Parser - Вставка mtimes

1 голос
/ 29 апреля 2010

Какой инструмент командной строки я могу использовать для автоматической вставки mtimes в URL-адреса в моих css-файлах с целью взлома кэша?

/* before */
.example { background: url(example.jpg); }
/* after */
.example { background: url(example.jpg?1271298451); }

Кроме того, я бы хотел, чтобы этот инструмент выдавал последний mtime в качестве mss-файла css. (Если файл css все еще кэшируется, то новые URL-адреса не попадут на клиент.)

При поиске в Интернете я нашел очень мало инструментов, которые могут это сделать. Я даже думаю о том, чтобы катиться самостоятельно, но нашел очень мало способов синтаксического анализа CSS, которые активно поддерживаются. Кандидат должен быть:

  • быстро (я не хочу ждать 30 секунд при развертывании)
  • доступная командная строка (что-то вроде "cat foo.css bar.css | cssmtime> out.css")

Что я нашел до сих пор

  • компрессор yui - изначально я думал, что для этого расширю компрессор yui, но обнаружил, что он реализован в виде набора регулярных выражений, а не парсера.
  • csstidy - последний выпуск был в 2007 году, и разработка была приостановлена, но есть опция для вставки mtimes (также написана на php, но у меня нет опыта)
  • cssutils - реализация пакета python sac - кажется, активно поддерживается, но также кажется излишним для моих нужд. Также написано на python, с которым у меня есть опыт работы
  • csspool - реализация пакета ruby ​​- я не знаю много ruby, но хотел бы выучить
  • другие реализации sac - Существует несколько реализаций java и реализация c, о которых я не знаю много о

Какой у вас опыт?

Вы использовали какую-либо из этих библиотек? Был ли опыт положительным? Вы бы порекомендовали мне пойти с ними в моих целях?

1 Ответ

2 голосов
/ 29 апреля 2010

Если вы выберете собственный вариант, вы можете сделать его простым поиском / заменой, здесь нет необходимости в сложном разборе. Например, если вы указали, какие файлы необходимо повторно кэшировать, добавив строку запроса самостоятельно, вы должны сделать это:

.example { background: url(example.jpg?<MTIME>); }

Тогда ваш код просто нужно найти <MTIME> и заменить. Это будет примерно так же быстро, как вы сможете получить, и даст вам контроль над изображениями, которые требуют повторного кэширования, и теми, которые этого не делают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...