Ember为CDN新鲜发布独特的资产文件名?

时间:2017-01-23 01:51:12

标签: javascript templates ember.js handlebars.js ember-cli

为了强制更新静态资产从顽固的CDN加载,我正在寻找一种方法来发布 app / index.html 中每个src="assets/...引用的方法到唯一的文件名,以保持CDN分布新鲜。

也许在index.html:

<link rel="stylesheet" href="assets/vendor.css?version={{content-for 'version'}}">

然后在其他地方我可能会使用随机数或构建标记覆盖自定义content-for值。

想法?谢谢!

2 个答案:

答案 0 :(得分:1)

答案是Ember fingerprinting

默认情况下,它已在生产中启用:

ember build --environment=production

这将导致 index.html 中的以下内容(如下所示)以及相应的资产文件名:

<link rel="stylesheet" href="assets/vendor-d41d8cd98f00b204e9800998ecf8427e.css" integrity="sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==" >

要为所有环境默认启用指纹识别,请将其添加到ember-cli-build.js

// ember-cli-build.js
var app = new EmberApp({
  fingerprint: {
    enabled: false
  }
});

答案 1 :(得分:0)

我想您可以通过配置ember-cli-build.js文件来完成此操作。此文件的默认值如下所示:

// ember-cli-build.js
var app = new EmberApp({
  outputPaths: {
    app: {
      html: 'index.html',
      css: {
        'app': '/assets/application-name.css'
      },
      js: '/assets/application-name.js'
    },
    vendor: {
      css: '/assets/vendor.css',
      js: '/assets/vendor.js'
    }
  }
});

查看configuring output pathsember-cli user guide部分。