所有.js文件都带有看似随机的十六进制字符

时间:2013-10-22 21:01:58

标签: javascript backbone.js requirejs gruntjs r.js

我正在对一年前建立的另一个开发人员的backbone.js应用程序进行一些维护。应用程序从连接和缩小的上下文运行;所以有一个构建过程,但我看不到我识别的Gruntfile或其他构建文件或进程。

此外,应用程序中的所有.js文件都带有看似随机的十六进制数字,后跟这种形式的句点:

7634d305.main.js
880bef54.text.js
1deb5b0d.router.js
..and so on

经过一番挖掘后,我意识到这个开发人员可能一直在使用r.js来构建缩小的部署版本。我无法运行r.js因为整个目录树中的每个依赖项和javascript文件都带有这些奇怪的十六进制字符。

这是一种人们认可的发展模式吗?为什么这些文件的名字是这样的?我可以花一些时间编写一个脚本来删除主要的十六进制字符,但我想确保有一些我不知道的明显工具或步骤。

2 个答案:

答案 0 :(得分:2)

这是一种常见的技术,它基本上将文件内容的散列版本添加到文件名中,用于缓存清除;因此,您可以在静态资产上设置较长的到期日期,然后在更新时,重新生成哈希值(因此浏览器会有效地查看新文件并下载更新的文件)。看起来这个被截断为一定长度,但只要散列算法允许(如果你想),它们就可以。(/ p>

在Grunt中,你可以使用grunt-usemingrunt-rev的组合为自己生成这些,但是有很多工具已经做到这一点,一些流行的PHP框架内置了它,例如Symfony。也许这些是由服务器端框架生成的。

答案 1 :(得分:0)

我不知道他们专门用来生成它的工具,但我猜它可能是文件名和时间散列的结果或类似的文件。

这些文件的命名方式使它们具有唯一性,以便在部署时,浏览器不会使用main.js的缓存版本并破坏应用程序。