javascript - pass - El middleware de compresión express.js no funciona
routing node js (2)
El problema estaba en volver a enrutar al puerto 80-th como:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
¡Gracias a @robertklep por ayuda!
Tengo los siguientes middlewares en mi aplicación:
app.use(express.favicon(__dirname + ''/static/public/images/favicon.ico''));
app.use(express.compress());
app.use(express.json());
app.use(express.urlencoded());
app.use(express.cookieParser(''SECRET!''));
app.use(express.static(__dirname + config.static_path, {maxAge: 365 * 86400000}));
app.use(express.session({secret: ''SECRET!''}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
ejemplo de encabezados:
Pero el contenido estático no se comprime. ¿Cual podría ser el problema?
Hay varias razones por las que su contenido estático puede no comprimirse:
-
express.compress
mantiene un umbral mínimo de tamaño de archivo; los archivos con un tamaño por debajo de este umbral (predeterminado: 1024 bytes) no se comprimirán; -
express.compress
también mantiene una lista blanca de tipos de contenido para comprimir; si está publicando archivos con un tipo de contenido que no está en esa lista, tampoco se comprimirá;
Arreglar:
app.use(express.compress({
threshold : 0, // or whatever you want the lower threshold to be
filter : function(req, res) {
var ct = res.get(''content-type'');
// return `true` for content types that you want to compress,
// `false` otherwise
...
}
}));
(como referencia, esta es la función de filtro predeterminada utilizada)