无法使用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' }) 

http://expressjs.com/api.html

别名为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);