从sailsjs中删除etag

时间:2016-05-09 23:49:07

标签: sails.js

我试图在我的应用程序中删除 etag http标头。我跟着answer posted here。解决方案完全有意义!我也知道我的风帆变量是全球性的和有效的。但是我无法得到;

sails.hooks.http.app.disable('etag');

和/或

sails.hooks.http.app.set('etag', false);

即使它们在bootstrap.js文件中也能正常工作。 Etags仍然出现???我在这里错过了什么吗?

(我在风帆版本0.12.3上)

1 个答案:

答案 0 :(得分:0)

没有一种方法可以同时删除动态文件和静态文件中的etag。您描述的方式是针对动态文件的。对于静态文件,您必须通过将此代码添加到config / https.js文件中来覆盖www中间件

www: (function() {
  var flatFileMiddleware = require('serve-static')('.tmp/public', {
    maxAge: 31557600000,
    etag: false
  });

  return flatFileMiddleware;
})(),

如果您仍然想为缓存控制标头设置一个年龄,则必须使用maxAge。另外请注意,这将覆盖用于定义该年龄的同一http.js文件中的cache选项。

出于我的目的,我只想从/ min文件夹中提供的静态文件中删除etag,这些文件是缩小的css和js文件。为此,我必须在routes.js文件中定义一条路由

'get /min/*': { 
  skipAssets: false,
  fn: [
    require('serve-static')('.tmp/public', {
      maxAge: process.env.NODE_ENV !== 'production' ? 0 : 31557600000,
      etag: false
    }),
  ]
}

如果您需要更多详细信息,请参见https://github.com/balderdashy/sails/issues/5306#issuecomment-508239510