JavaScript对象在HTTP请求中占用的数据大小(kB)是多少?

时间:2014-10-27 23:52:47

标签: javascript node.js http

给定一个JavaScript对象:

var data = {
  foo: 'bar',
  answer: 42,
  bestXmlParser: 'regex'
  ...
}

如何确定在HTTP请求中占用的大小?

这将仅使用纯ASCII字符。

最终,该对象将转换为XML(SOAP对象,通过node-soap)并转换为SOAP协议使用的任何编码(我假设字符,但不确定)。

我知道有开销,这与我最终制作的HTTP请求的大小不完全相同,特别是在转换为XML之后

但是,我从对象本身确定的粗略大小将帮助我限制请求大小并避免生成HTTP 413 Request Entity Too Large

1 个答案:

答案 0 :(得分:3)

  1. 将XHR请求发送到您的服务器,然后打开Chrome开发者工具中的网络标签。
  2. 打开后,单击代表您刚刚发出的XHR请求的链接。
  3. 在“响应”或“请求标头”下查找 Content-Length http标头。
  4. 该数字是响应或请求正文中的数据字节数。


    更新:

    Blob也可以告诉你字节。例如:

    var b = new Blob(['{"test":"one two three"}'], {type: "text/plain;charset=UTF-8"});
    b.size //=> 24
    


    数据可以是不同类型( String,ArrayBuffer,Blob ),也可以是任何顺序。例如:

    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)
    

    更多信息:http://www.w3.org/TR/FileAPI/#dfn-Blob


    更新2:

    在Node.js中,Buffers看起来可以用来完成同样的事情。更多信息:http://nodejs.org/api/buffer.html#buffer_class_method_buffer_bytelength_string_encoding

    示例:

    > str = 'hello world'
    > Buffer.byteLength(str, 'utf8') + ' bytes'
    '11 bytes'