无法使用gzippo设置Cache-Control标题
我在使用gzippo服务器的时候遇到了设置max-age头的麻烦。
快递testing:
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
用gzippotesting:
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头文件?
-
更重要的是,尽pipe尝试手动设置 , 为什么max-age头还没有设置为0,并作为gzippo的一个选项 ?
Gzippo文档: https : //github.com/tomgco/gzippo
为什么我的express.js服务器中没有设置foo头文件?
Express公开了一个不同于res.setHeader()
API来设置响应头。
您应该使用res.set('HEADER', 'VALUE')
根据快速文档
更重要的是,尽pipe尝试手动设置max-age头文件,为什么不将它设置为0,并作为gzippo的一个选项?
所以我研究过gizippo的代码,它在初始化时执行以下操作:
var maxAge = options.maxAge || 86400000,
所以如果你将maxAge
传递给0, maxAge
javascript的评估就是这样
var maxAge = 0 || 86400000,
因此 ,maxAge将是86400000!
希望这有助于,干杯!
看起来他们有一个名为set()
的包装器
res.set('Content-Type', 'text/plain'); res.set({ 'Content-Type': 'text/plain', 'Content-Length': '123', 'ETag': '12345' })
别名为res.header(field,[value])。
我结束了与.compress()选项使用快递
var 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);