首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Node.js: Gzip压缩?

Node.js: Gzip压缩?
EN

Stack Overflow用户
提问于 2010-10-09 06:40:41
回答 11查看 115K关注 0票数 98

我发现Node.js没有gzip压缩,也没有模块可以执行gzip压缩,这是不是错了?任何人如何使用没有压缩的web服务器?这里我漏掉了什么?我是否应该尝试将算法移植到JavaScript以供服务器端使用?

EN

回答 11

Stack Overflow用户

发布于 2012-02-11 13:56:44

Node v0.6.x现在在核心中有一个稳定的zlib module -文档中也有一些关于如何在服务器端使用它的例子。

下面是一个示例(取自文档):

代码语言:javascript
复制
// server example
// Running a gzip operation on every request is quite expensive.
// It would be much more efficient to cache the compressed buffer.
var zlib = require('zlib');
var http = require('http');
var fs = require('fs');
http.createServer(function(request, response) {
  var raw = fs.createReadStream('index.html');
  var acceptEncoding = request.headers['accept-encoding'];
  if (!acceptEncoding) {
    acceptEncoding = '';
  }

  // Note: this is not a conformant accept-encoding parser.
  // See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3
  if (acceptEncoding.match(/\bdeflate\b/)) {
    response.writeHead(200, { 'content-encoding': 'deflate' });
    raw.pipe(zlib.createDeflate()).pipe(response);
  } else if (acceptEncoding.match(/\bgzip\b/)) {
    response.writeHead(200, { 'content-encoding': 'gzip' });
    raw.pipe(zlib.createGzip()).pipe(response);
  } else {
    response.writeHead(200, {});
    raw.pipe(response);
  }
}).listen(1337);
票数 77
EN

Stack Overflow用户

发布于 2013-01-15 23:48:12

如果你使用的是Express,那么你可以在配置中使用它的compress方法:

代码语言:javascript
复制
var express = require('express');
var app = express.createServer();
app.use(express.compress());

你可以在这里找到更多关于压缩的内容:http://expressjs.com/api.html#compress

如果你没有使用Express..。为什么不呢,伙计?!:)

注意:(感谢@ankitjaininfo)这个中间件应该是您“使用”的第一个中间件,以确保所有响应都是压缩的。确保这高于您的路由和静态处理程序(例如,上面我是如何拥有它的)。

注意:(感谢@ciro-costa)从express 4.0开始,express.compress中间件就被弃用了。它是从Connect3.0继承而来的,express不再包含Connect3.0。检查Express Compression以获取中间件。

票数 63
EN

Stack Overflow用户

发布于 2010-10-09 07:04:01

一般来说,对于生产web应用程序,您会希望将您的node.js应用程序放在一个轻量级反向代理后面,例如nginx或lighttpd。在此设置的众多好处中,您可以配置反向代理来执行http压缩,甚至tls压缩,而不必更改应用程序源代码。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3894794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档