Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript expressgzip静态内容_Javascript_Node.js_Express_Gzip - Fatal编程技术网

Javascript expressgzip静态内容

Javascript expressgzip静态内容,javascript,node.js,express,gzip,Javascript,Node.js,Express,Gzip,Express和connect似乎删除了它们的gzip函数,因为它们效率太低。目前有没有关于express js的可靠gzip解决方案?如果您搜索过npm,您可能会遇到 将其作为中间件注入express应该不会太难。我还搜索了npm,发现了例如: 发音为g-zippo的gzippo是一个gzip 使用Compress的连接中间件 为了更好的表现 Gzippo最近开发出来(两天前),我认为这是一件好事。我不能告诉你生产使用情况。你应该自己测试/基准测试它。我还可能使用一个用于实时站点的CD

Express和connect似乎删除了它们的gzip函数,因为它们效率太低。目前有没有关于express js的可靠gzip解决方案?

如果您搜索过npm,您可能会遇到


将其作为中间件注入express应该不会太难。

我还搜索了npm,发现了例如:

  • 发音为g-zippo的gzippo是一个gzip 使用Compress的连接中间件 为了更好的表现


Gzippo最近开发出来(两天前),我认为这是一件好事。我不能告诉你生产使用情况。你应该自己测试/基准测试它。我还可能使用一个用于实时站点的CDN或Nginx来承载我的静态文件,而不是一些nodejs模块。

Connect将在下一版本中支持Node中的新zlib功能。

基于Node Core API中刚刚推出的with,添加了对中间件的支持

通过在
package.json
文件中添加对connect 2.0的依赖项,您可以在express服务器中利用此功能:

{
    ...
    dependencies: {
        "connect" : "2.x",
        "express" : "2.x",
        // etc..
    }
}
然后将以下逻辑应用到express app配置中:

// 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);
请注意,这个东西仍然很新,虽然我可以让它在本地工作,但我的云应用程序抱怨在通过git部署时,在预提交挂钩期间依赖Compress 2.x:

-----> 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-'
以下是使用http压缩测试仪时的结果:

2014年6月更新

你好,如果你现在正在读这个。不要忘记上面的内容只与Express 2.0相关


Express 3.0和4.0使用不同的语法来启用http压缩,请参见下面gasolin的文章。

Express 3.0现在具有compress()支持:

编辑 对于Express 4.0,compress成为独立的中间件。因此,您必须安装并导入才能使用它:

var compress = require('compression');
app.use(compress()); 

有很多可用的压缩库,但我想知道人们是否在生产中成功地使用了它们。@gAMBOOKa我个人使用这个库,但不只是为了开发而用于生产。我们在英国一家大型报纸的生产中使用gzippo。在节点层中配置内容压缩的好处在于,您可以简单地将Varnish、Squid或CDN放在上游,它将遵守http头并在代理/CDN上保留一个缓存的压缩副本,以供所有后续请求使用。这会将缓存配置与节点代码以及git/svn等保持在一起。@AndreyLushnikov:您必须在
静态
之前
使用()
压缩
res.write
res.end
,以便它可以通过zlib代理数据。如果
static
compress
之前,它会在
compress
中间件有机会运行和修补
res
方法之前处理整个请求。Steven,我已经更新了您的答案,以交换
use()
调用。@gasolin在下面指出,Express 3.0现在支持
compress()。如果您正在阅读本文,请更新您的答案好吗?您是如何使用http compression tester的?上面为compression tester提供的链接似乎不再有效。这里有一个替代方案:Express
4.x
删除了几乎所有的中间件,包括
compress
。您现在可以使用Connect的
压缩
中间件:。在什么情况下会触发压缩,这需要额外的步骤吗?我只是添加了它,但是写了
res.send
,没有Gzip内容出来。它需要
res.end
或其他一些触发器吗?当您想从运行时模板->html使用Express 4.xApart压缩静态文件时,不要忘记添加{threshold:0},如果我们可以压缩它们,对.js和.css使用压缩是否好?因为在bcoz流量大的情况下,使用SSR不是一个好主意,它必须对每个请求的文件进行压缩。。您能告诉我如何仅为.html使用
压缩
吗?我正在使用
.ejs
作为模板@另外,我没有为我的.css或.js文件添加阈值:0,它很快就工作了。这对某些人来说仍然是相关的:因为我想提供gziped静态文件,但不想在运行中增加这样做的开销,所以我在express.static上写了一个小包装,它允许提供allready gziped文件。如果将gzip html/css/js文件集成到构建过程中,这将非常有用。可在npm上找到模块:
var app = express();
// gzip
app.use(express.compress());
// static
app.use("/public", express.static(__dirname + '/public'));
// listen
app.listen(80);
var compress = require('compression');
app.use(compress());