2014-10-27 18 views
1

給定一個JavaScript對象:JavaScript對象在HTTP請求中佔用什麼數據大小(kB)?

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

我怎麼能確定這將在HTTP請求中採取什麼樣的規模呢?

這將只使用純ASCII字符。

最終,對象將被轉換爲XML(SOAP對象,通過node-soap),並作爲SOAP協議使用的任何編碼(我假設字符,但不確定)傳輸。

我知道有開銷,這不是我最終使HTTP請求,尤其是轉換爲XML

但是經過粗略大小我從對象確定的大小正好等於自己會幫我掐死我請求大小和避免產生HTTP 413 Request Entity Too Large

+5

這取決於你如何編碼的對象。一個對象只是內存中的某個區域。如果你想通過HTTP發送數據,你必須首先轉換成可以通過HTTP傳輸的東西(可能是字符數據)。 – 2014-10-27 23:53:52

+2

這個請求也會從頭文件等開銷 – TGH 2014-10-27 23:55:05

+0

謝謝,我用我所瞭解的編碼更新了Q. – aarosil 2014-10-28 00:06:52

回答

2
  1. 發送XHR請求到服務器,並打開Chrome開發者工具的網絡標籤。
  2. 打開後,點擊代表您剛剛完成的XHR請求的鏈接。
  3. 在響應或請求標頭下查找內容長度 http標頭。

該數字是響應或請求正文中數據的字節數。


UPDATE:

而且斑點可以告訴你的字節數。例如:

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


的數據可以是不同類型的(字符串,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' 
+0

謝謝。我更多地尋找一種方法來在程序中以編程方式獲取此內容。 – aarosil 2014-10-28 00:06:18

+0

使用他提供的例子你可以很簡單地做到這一點...var b = new Blob([data],{type:「text/plain; charset = UTF-8」});的console.log(b.size); – FunnyLookinHat 2014-10-28 00:35:53

+0

很酷,謝謝!看起來很有希望。 Node.js中是否有等價的方法?我注意到'Blob'並不是全球性的。 – aarosil 2014-10-28 01:26:04