CSS Parser - 插入mtimes

时间:2010-04-28 22:18:13

标签: css command-line parsing filemtime

为了打破缓存,我可以使用什么命令行工具自动将mtimes插入到我的css文件中的url中?

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

另外,我希望这个工具能够将最新的 mtime作为css文件mtime吐出。 (如果css文件仍然被缓存,那么新的URL将不会到达客户端。)

在搜索网络时,我发现很少有工具可以做到这一点。我甚至考虑自己动手,但发现积极维护的css解析器的方式很少。候选人应该是:

  • 快(我不想在部署上等待30秒)
  • 命令行可访问(类似“cat foo.css bar.css | cssmtime> out.css”)

我发现了什么

  • yui compressor - 最初我以为我会扩展yui压缩器来执行此操作,但发现它实现为一堆正则表达式而不是解析器。
  • csstidy - 最后一个版本是在2007年,开发已暂停,但确实有一个选项可以插入mtimes(也是用php编写的,我没有经验)
  • cssutils - python sac实施 - 似乎是积极维护的,但对我的需求来说似乎也有些过分。另外,用python编写,我有
  • 经验
  • csspool - 红宝石囊实施 - 我不太了解红宝石,但想学习
  • other sac implementations - 有几个java实现,以及一个我不太了解的c实现

你的经历是什么?

您是否使用过这些库中的任何一个?这次经历是积极的吗?你会建议我和他们一起去我的目的吗?

1 个答案:

答案 0 :(得分:2)

如果你自己滚动是一个选项,你可以使它成为一个简单的查找/替换,这里不需要复杂的解析。例如,如果您通过自己添加查询字符串来指定哪些文件需要重新缓存,则可以执行以下操作:

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

然后您的代码只需找到<MTIME>并替换。它会尽可能快地获得,并让您控制需要重新缓存的图像和不需要重新缓存的图像。