我试图在我的node.js服务器上实现指纹,我使用的是requirejs,我的主页加载了这样的脚本:
<script src="/public/assets2/scripts/lib/requirejs/require.js"></script>
<script src="/public/assets2/scripts/app/common.js"></script>
<script>
require.config({baseUrl: '/public/assets2/scripts/lib'});
require(['app/main']);
</script>资产被内置到public/assets2目录中。在重新构建时,我希望将requirejs baseUrl更改为哈希版本public/assets2/HASHHASH。因此,需求将请求这样的脚本:public/assets2/HASHHASH/scripts/app.main.js
像这样将散列添加到baseUrl中是个好主意吗?如果我正确理解,我认为这是推荐的方法。
资产仍然是在public/assets2中构建的,而不是在public/assets2/HASHHASH中构建的,所以我需要在这两者之间进行映射,或者将资产实际放置到HASHASH目录中。是否有一个好的库已经这样做了,我如何简单地实现这一点?
编辑
borschik很好,但是需求已经将我的所有资产复制到构建文件夹中,以后它可以在那里请求它们。borchik是对需求的过激行为。但是,需求没有内置的解决方案来破坏缓存。根据我在这里的理解:建议我将所有资产放在一个版本化的文件夹中,并相应地修复我的baseUrl。这是对需求的最简单的修正,而且我甚至不需要从文件中生成散列,每次运行构建任务时,我只会生成一个散列。
我遇到的问题是第三步。
3.配置您的etc服务器(nginx等)返回原始文件,即使您使用散列请求它。
我要求在nodejs上找到一种方便的方法来做这件事。
示例:
获取public/assets2/<hash>/app/main.js
条形散列并返回public/assets2/app/main.js
另一个问题是,即使我只更改了一个文件,每个资产也会被破坏。因此,我想最终的解决方案是将其构建到需求中。
r.js将在优化时与散列对应方复制所有资产。然后在浏览器上,它将请求散列文件urls。这将需要一个清单文件,在优化工具和浏览器上的需求之间。
发布于 2014-07-14 07:05:50
如果borschik不适合您,那么下面是一些关于如何实现这种机制的理论:
.build-catalog.json创建的grunt-frontend中进行搜索,以创建和返回特定于散列的url。但也有一个限制。grunt-frontend只能从文件中计算散列,而不能计算文件夹。您不能设置baseUrl: requireURL('/public/assets2/scripts/lib'),因为所有文件都需要使用相同的散列。
但是文件夹有一个解决办法。您可以向感兴趣的文件夹请求文件和剥离结果的url。但是请记住,文件夹哈希将在文件更改时进行更改。
除此方案外,还可以配置文件分块以改进浏览器中的并行资源加载。
https://stackoverflow.com/questions/24711696
复制相似问题