如何在Sails.js中gzip JavaScript和CSS资产?

时间:2013-12-23 11:55:12

标签: node.js express gzip sails.js

我正在尝试在Sails.js(Node)应用程序中为我的资产启用gzip压缩。在生产环境中启动应用程序时,assets/linker/jsassets/linker/styles中的所有资产都会成功连接,缩小,成功(如Gruntfile中所指定)。生成以下输出文件:

.tmp/
  public/
    min/
      production.js
      production.css

我想添加gzip压缩,因此我安装了grunt-contrib-compress并将压缩任务添加到Gruntfile。成功压缩文件后,我可以得到以下结果。

.tmp/
  public/
    min/
      production.js
      production.js.gz
      production.css
      production.css.gz

我现在的问题是,服务器需要使用gzip压缩文件(当客户端接受编码时)而不是正常文件,我无法找到方法来执行此操作。也许政策是做这样的事情的风帆?或者是否有另一种使用快速中间件的方法?

如果有帮助,这是当前的sails-linker任务,它将javascript production.js文件插入到标记中:

  ...

  prodJs: {
    options: {
      startTag: '<!--SCRIPTS-->',
      endTag: '<!--SCRIPTS END-->',
      fileTmpl: '<script src="%s"></script>',
      appRoot: '.tmp/public'
    },
    files: {
      '.tmp/public/**/*.html': ['.tmp/public/min/production.js'],
      'views/**/*.html': ['.tmp/public/min/production.js'],
      'views/**/*.ejs': ['.tmp/public/min/production.js']
    }
  },

  ...

非常感谢提前。

1 个答案:

答案 0 :(得分:6)

我建议你阅读这个github问题(Enable Express compression in Sails.js by default),以及这个stackoverflow答案(Add express middleware for param validations)以获取更多细节和sailsjs框架方式。

希望得到这个帮助,如果遇到一些困难,请不要犹豫,详细询问。