0

为了打破缓存,我可以使用什么命令行工具自动将 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 压缩器- 最初我以为我会扩展 yui 压缩器来执行此操作,但发现它是作为一堆正则表达式而不是解析器实现的。
  • csstidy - 最后一个版本是在 2007 年,开发已暂停,但确实有插入 mtimes 的选项(也是用 php 编写的,我没有经验)
  • cssutils - python sac 实现 - 似乎得到了积极维护,但对于我的需求来说似乎有点过分了。另外,用我有经验的python编写
  • csspool - ruby​​ sac 实现 - 我对 ruby​​ 了解不多,但想学习
  • 其他 sac 实现- 有几个 java 实现和 ac 实现,我对它们都不太了解

你有什么经验?

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

4

1 回答 1

1

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

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

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

于 2010-04-28T22:23:50.700 回答