Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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 如何在express中发送不分块编码但具有内容长度标头的gzip数据?(node.js)_Javascript_Node.js_Gzip_Chunked Encoding_Http Content Length - Fatal编程技术网

Javascript 如何在express中发送不分块编码但具有内容长度标头的gzip数据?(node.js)

Javascript 如何在express中发送不分块编码但具有内容长度标头的gzip数据?(node.js),javascript,node.js,gzip,chunked-encoding,http-content-length,Javascript,Node.js,Gzip,Chunked Encoding,Http Content Length,我有点像: var app = require('express')(); var compression = require('compression'); app.use(compression()); app.get('/', function(request, response) { response.send('<!DOCTYPE html>.......'); } app.listen(2345); 问题是数据被分块发送,但我希望它完全使用内容长度头发送。正如Apac

我有点像:

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

app.get('/', function(request, response) {
response.send('<!DOCTYPE html>.......');
}
app.listen(2345);
问题是数据被分块发送,但我希望它完全使用内容长度头发送。正如Apache在默认情况下所做的那样,注释中解释了我为什么需要这种行为。
那么,如何在express中直接发送Gzip数据而不分块呢?

不分块发送Gzip数据效率很低。在压缩过程中,这将需要整个资源的临时磁盘空间或内存,而且输出将无法流式传输。你为什么要这么做?我还建议将这类任务交给上游的web服务器,比如Nginx,甚至Apache,如果你喜欢的话。如果我的速度是250kbps,那么延迟就应该少一些,但数据下载速度大约为200ms,无论我的速度是750kbps还是30Mbps,都是200ms。如果我使用Apache发送这个gzip数据,它设置了内容长度,下载通常在~1ms内发生。这一切都是为了什么?更准确地说,如果我在250kbps网络上,3k数据下载时间为1ms;如果我在750kbps网络上,下载时间为100ms;如果我在30Mbps网络上,下载时间为200ms。这是什么??随着网络速度的提高,下载时间也随之增加?它们不应该成反比吗?如果数据被分块发送,就会发生这种情况。您测试的内容并不完全清楚。首先,通过在127.0.0.1上调用服务器来隔离问题并将其缩小到应用程序。我还要说,300毫秒压缩3KB的数据是一个非常长的时间。我不相信你的问题与分块有关。调用localhost并捕获数据包以查看。不要使用开发工具,这不是一种在不同速度下进行测试的可靠方法,尤其是在如此小的内容大小下。