JavaScript对象在HTTP请求中会占用多少数据大小(kB)?
给定一个JavaScript对象:JavaScript对象在HTTP请求中会占用多少数据大小(kB)?,javascript,node.js,http,Javascript,Node.js,Http,给定一个JavaScript对象: var data = { foo: 'bar', answer: 42, bestXmlParser: 'regex' ... } 如何确定HTTP请求中的大小 这将仅使用普通ASCII字符 最终,该对象将被转换为XML(SOAP对象通过节点SOAP)并作为SOAP协议使用的任何编码进行传输(我假设是字符,但不确定) 我知道会有开销,这与我最终发出的HTTP请求的大小并不完全相同,尤其是在转换为XML之后 但是,我从对象本身确定的粗略大小将帮
var data = {
foo: 'bar',
answer: 42,
bestXmlParser: 'regex'
...
}
如何确定HTTP请求中的大小
这将仅使用普通ASCII字符
最终,该对象将被转换为XML(SOAP对象通过节点SOAP
)并作为SOAP协议使用的任何编码进行传输(我假设是字符,但不确定)
我知道会有开销,这与我最终发出的HTTP请求的大小并不完全相同,尤其是在转换为XML之后
但是,我从对象本身确定的粗略大小将帮助我限制请求大小,并避免生成过大的HTTP 413请求实体
更新: 此外,blob还可以告诉您字节数。例如:
var b = new Blob(['{"test":"one two three"}'], {type: "text/plain;charset=UTF-8"});
b.size //=> 24
var b24 = new Blob(['{"test":"one two three"}'], {type: "text/plain;charset=UTF-8"});
var b18 = new Blob(['Hello cruel world!'], {type: "text/plain;charset=UTF-8"});
var blob = new Blob(['hello world', b24, b18]);
blob.size //=> 53, (24+18+11 = 53 bytes)
数据可以是不同的类型(字符串、ArrayBuffer、Blob)和任何顺序。例如:
var b = new Blob(['{"test":"one two three"}'], {type: "text/plain;charset=UTF-8"});
b.size //=> 24
var b24 = new Blob(['{"test":"one two three"}'], {type: "text/plain;charset=UTF-8"});
var b18 = new Blob(['Hello cruel world!'], {type: "text/plain;charset=UTF-8"});
var blob = new Blob(['hello world', b24, b18]);
blob.size //=> 53, (24+18+11 = 53 bytes)
详情如下:
更新2: 在Node.js中,
缓冲区可以用来完成同样的任务。详情如下:
例如:
> str = 'hello world'
> Buffer.byteLength(str, 'utf8') + ' bytes'
'11 bytes'
这取决于对对象的编码方式。对象只是内存中的某个区域。如果您想通过HTTP发送数据,您必须首先转换为可通过HTTP传输的数据(可能是字符数据)。请求也会有来自标题等的开销。谢谢,我用我所知道的编码更新了Q。谢谢。我正在寻找一种在我的应用程序中通过编程实现这一点的方法。。。var b=newblob([data],{type:“text/plain;charset=UTF-8”});控制台日志(b.size);酷,谢谢!看起来很有希望。Node.js中是否有等效的方法?我注意到Blob
在那里不是全局的。感谢它为我的目的工作,我不确定这在HTTP请求中是否是相同的数据大小,尽管我认为字节是字节,不管它们如何使用,除非在HTTP级别上发生一些积极的压缩。。。我不确定。但即使是这样,字节也会比原始字节少,而不是多。我认为节点缓冲区/浏览器blob会显示原始字节。