编程grunt-rev / grunt-usemin以使用commit-id

时间:2013-06-11 00:46:55

标签: gruntjs

grunt-rev的默认行为是评估给定资源并在路径中放入内容的哈希值,因此/images/sprites/rewards.png变为/images/sprites/f936712a.rewards.png

我不希望这样。我有几个版本同时提供,我希望能够随意删除旧版本,所以我想将其重命名为/2013-06-10-e75607/images/sprites/rewards.png(其中e75607是整个修订版的commit-id,与单个文件无关。)

这是grunt-rev和grunt-usemin的可能吗?是否有相同的工具可以做到这一点?

修改

有几个人问我为什么不使用每个文件的哈希值。让我解释一下:

在旧式网站中,为了响应几乎任何用户输入,浏览器被重新加载,后端从输入生成一个全新的页面,HTML被发送到浏览器,显示页面。这是一个缓慢的,CPU和带宽密集的过程,但它确实有一个优点:所有加载的资产都会在几秒钟内加载到一起。

在更现代的网站中,加载的页面描述了整个应用程序。当用户进行一些输入时,页面上的Javascript会呈现新的DOM元素并根据需要加载新资源。整个页面很少或从未重新加载该站点的响应性非常高(并且更容易开发,更安全,运行更便宜,并且开启等)但具有相应的缺点:资产可能会被加载数小时或者页面加载后的几天。

说,您在网站运行版本cd1d0906时上午10点访问该网站。 10:30,该站点升级到版本4b571377。在上午11点,您按下一个按钮,该按钮会导致弹出一个名为sprite.png的图像。显然,你需要sprite.png的cd1d0906版本 - 而不是4b571377版本。

因此,维护良好的网站将在版本更改后的几天内继续提供所有资产的旧版本。最简单的方法是将所有资产保存在以版本命名的目录中。

这种“不必要地”丢弃未更改文件的缓存条目的抱怨相当令人难以置信。大多数部署的资产是CSS文件,JS文件和精灵,所有这些都是许多较小文件的汇编。这是一个罕见的部署,不会更改一个 CSS文件和一个 JS文件和一个 sprited图像。版本更改后,缓存很少有价值。

0 个答案:

没有答案