我试图在我的应用程序中删除 etag http标头。我跟着answer posted here。解决方案完全有意义!我也知道我的风帆变量是全球性的和有效的。但是我无法得到;
sails.hooks.http.app.disable('etag');
和/或
sails.hooks.http.app.set('etag', false);
即使它们在bootstrap.js文件中也能正常工作。 Etags仍然出现???我在这里错过了什么吗?
(我在风帆版本0.12.3上)
答案 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。