在我深入研究connect和express等框架之前,我正在学习基本节点。我遇到过缓冲区的主题。我什么时候需要在节点中使用缓冲区?如何知道缓冲区的大小?
如果我在POST请求中发送了一串文本,我是否需要缓冲它?
var server = http.createServer(function(req,res) {
var body = '';
req.setEncoding('utf8');
req.on('data', function(chunk) { body += chunk});
req.on('end', function() { //... });
});
我知道connect提供了limit()功能,但我不确定这是否会延迟到后台缓冲区。除此之外,我特别感兴趣的是,在vanilla节点中,我是否需要使用缓冲区来存储JSON和字符串等数据,或者当我的数据可能像文件上传一样大时,我应该使用缓冲区吗? / p>
答案 0 :(得分:1)
我不确定你要求的是什么,但你有两个选择。 您可以将所有数据作为字符串检索,然后将其作为缓冲区包装或立即连接缓冲区。
var server = http.createServer(function(req,res) {
var body = '';
req.setEncoding('utf8');
req.on('data', function(chunk) { body += chunk});
req.on('end', function() {
var myBuffer = new Buffer(body); // this is now a buffer of the received chunks
});
});
var server = http.createServer(function(req,res) {
var bufs = [];
req.on('data', function(chunk) { bufs.push(chunk); });
req.on('end', function() {
var myBuffer = Buffer.concat(bufs); // this is now a buffer of the received chunks
});
});
Pure JavaScript对Unicode友好,但对二进制数据不好。什么时候 处理TCP流或文件系统,处理它是必要的 八位组流。 Node有几种操作,创建, 并消耗八位字节流。
原始数据存储在Buffer类的实例中。缓冲区是 类似于整数数组但对应于原始内存 在V8堆外部分配。缓冲区无法调整大小。
Buffer类是全局的,因此非常罕见 要求('缓冲区')。