使用gzippo服务器时,我无法设置max-age标头。
express.js:
var express = require('express');
var app = express();
app.configure(function () {
app.use(function (req, res, next) {
res.setHeader('foo', 'bar');
return next();
});
});
var connect = require('connect');
connect.createServer(
connect.static("" + __dirname + "/dist")
).listen(8090);
然后我这样做:
node express.js
# go to localhost:8090/test.html (just come static html file)
标题是:
Cache-Control:public, max-age=0
no foo header
gzippo.js
var gzippo = require('gzippo');
var express = require('express');
var app = express();
app.configure(function () {
app.use(function (req, res, next) {
res.setHeader('foo', 'bar');
return next();
});
});
app.use(express.logger('dev'));
app.use(gzippo.staticGzip("" + __dirname + "/dist", {maxAge: 0, clientMaxAge: 0}), {maxAge: 0, clientMaxAge: 0});
app.listen(8090);
然后我这样做:
node gzippo.js
# go to localhost:8090/test.html
标题是:
foo:bar
Cache-Control:public, max-age=604800
如果我在设置foo后尝试设置res.setHeader('Cache-Control', 'max-age=0')
,则我的响应标题中的最大年龄保持为604800。
我的问题是:
为什么我的express.js服务器中没有设置foo标头?
更重要的是,为什么max-age标头未设置为0,尽管尝试手动设置,并作为gzippo的选项?
Gzippo doc:https://github.com/tomgco/gzippo
答案 0 :(得分:1)
为什么我的express.js服务器中没有设置标头?
Express会在响应中设置与res.setHeader()
不同的API来设置标头。
res.set('HEADER', 'VALUE')
更重要的是,尽管如此,为什么max-age标头没有设置为0 试图手动设置,并作为gzippo的一个选项?
所以我查看了gizippo的代码,它在初始化时执行以下操作:
var maxAge = options.maxAge || 86400000,
因此,如果您将{0}作为maxAge
传递,则javascript的评估将为
var maxAge = 0 || 86400000,
因此,maxAge将为86400000!
希望这有帮助,干杯!
答案 1 :(得分:0)
看起来他们有一个名为set()
res.set('Content-Type', 'text/plain');
res.set({
'Content-Type': 'text/plain',
'Content-Length': '123',
'ETag': '12345'
})
别名为res.header(字段,[值])。
答案 2 :(得分:0)
我最后使用.compress()选项
使用expressvar express = require('express');
var app = express();
var modRewrite = require('connect-modrewrite');
//var fs = require('fs');
app.configure(function () {
app.use(modRewrite([
'!(\\..+)$ / [L]'
]));
});
app.use(express.compress());
app.use(express.logger('dev'));
var oneMinuteInMs = 60000;
// maxAge is 0 if you don't specify it
app.use(express.static("" + __dirname + "/dist", { maxAge: oneMinuteInMs }));
app.listen(8080);