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

标签 javascript node.js http

给定一个 JavaScript 对象:

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

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

这将仅使用纯 ASCII 字符。

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

我知道有开销,这不会完全等于我最终发出的 HTTP 请求的大小,尤其是在转换为 XML 之后

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

最佳答案

  1. 将 XHR 请求发送到您的服务器并打开 Chrome 开发者工具中的网络标签。
  2. 打开后,单击代表您刚刚发出的 XHR 请求的链接。
  3. 在响应或请求 header 下查找 Content-Length http header 。

该数字是响应或请求正文中数据的字节数。


更新:

Blobs 也可以告诉你字节数。示例:

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'

关于javascript - JavaScript 对象在 HTTP 请求中占用的数据大小 (kB) 是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26598790/

相关文章:

javascript - 谷歌地图只显示一个点

javascript - innerHTML 改变时绝对元素的位置改变

javascript - 为 HTTP 响应在 Node.JS 中迭代对象

json - 从压缩的 HTTP : invalid character looking for beginning of value 中解码 JSON

php - 如何通过流获取标题?

javascript - 如何将 Encoded url 转换成 JSON 格式?

javascript - 告诉 Laravels Validator 在哪里查看验证请求数组

javascript - Passport JS :redirect to another url with data

node.js - 302 重定向阻止请求中的回调

http - 为什么http前置条件头字段支持多个etags?