javascript - not - title css
Expresar contenido estático gzip (5)
Express y connect parecían haber eliminado sus funciones gzip porque eran demasiado ineficientes. ¿Hay alguna solución confiable para gzip con express-js actualmente?
Connect admitirá las nuevas cosas de zlib en Node en la próxima versión
Express 3.0 ahora tiene soporte de compress ():
var app = express();
// gzip
app.use(express.compress());
// static
app.use("/public", express.static(__dirname + ''/public''));
// listen
app.listen(80);
EDIT para Express 4.0, compress se convierte en el middleware por separado. Entonces debes instalarlo e importarlo para usarlo:
var compress = require(''compression'');
app.use(compress());
Si ha buscado en npm es posible que haya encontrado node-compress .
No debería ser demasiado difícil inyectarlo como middleware en express.
También busqué npm y encontré por ejemplo:
https://github.com/tomgallacher/gzippo
gzippo pronunciado g-zippo es un middleware gzip para Connect usando Compress para un mejor rendimiento.
Gzippo se desarrolló recientemente (hace 2 días) y creo que es algo bueno. No puedo contarte sobre el uso de producción. Debe probarlo / compararlo usted mismo. Probablemente también usaría un CDN para un sitio en vivo o Nginx para alojar mis archivos estáticos en lugar de algún módulo nodejs.
Connect 2.0 ha agregado soporte para middleware compress() basado en las nuevas cosas de zlib que acaba de salir en Node Core API.
Puede hacer uso de esto en su servidor express agregando una dependencia para conectar 2.0 en su archivo package.json
:
{
...
dependencies: {
"connect" : "2.x",
"express" : "2.x",
// etc..
}
}
Y luego aplique la siguiente lógica en la configuración de su aplicación expresa:
// Create static file server with gzip support
var app = express.createServer(express.logger());
app.use(connect.compress());
app.use(express.static(__dirname + ''/public''));
app.listen(80);
Tenga en cuenta que estas cosas todavía son bastante nuevas y, aunque podría hacerlo funcionar localmente, mi aplicación en la nube Heroku se quejó de la dependencia de Compress 2.x durante el enlace de precompromiso cuando implementó a través de git:
-----> Heroku receiving push
-----> Node.js app detected
-----> Resolving engine versions
Using Node.js version: 0.4.7
Using npm version: 1.0.106
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
npm ERR! Error: No compatible version found: connect@''>=2.0.0- <3.0.0-''
Como puede ver, todavía usan una versión anterior del nodo (0.4.7).
ACTUALIZAR:
De hecho, pude hacer que Heroku implementara esto agregando la sección de engines
correspondiente en el package.json
. package.json
:
{
...
"engines": {
"node": ">= 0.6.0 < 0.7.0"
}
}
Y estos son los resultados cuando se usa un probador de compresión http:
ACTUALIZACIÓN junio 2014
Hola, si estás leyendo esto ahora. No olvide que las cosas anteriores solo son relevantes para Express 2.0.
Express 3.0 y 4.0 utilizan una sintaxis diferente para habilitar la compresión http, ver publicación de gasolin justo debajo.