javascript:uri编码json使发布数据更大。另类?

时间:2013-09-03 07:31:00

标签: javascript json

我发布了大量数据。出于性能原因,我需要尽可能小。

我的数据以JS对象开头。然后我用json对它进行字符串化。然后我发一篇文章。

问题是我有很多objects:lists [] and dict {}以及短文本,由json放在引号""中。

然后在发布之前对它们进行uri编码。我不这样做;浏览器做到了。当我查看请求正文时,我可以看到结果。

因此,每个[, {,""现在都是uri编码的,这意味着我的字符串会变得更长。事实上,如果我比较

 alert(          JSON_local.stringify(myStuff).length);
    alert(encodeURI(JSON_local.stringify(myStuff).length);

uri编码的字符串大50%。当字符串开始变大时,那就更大了。

我在这里遗漏了什么吗? json是标准的,但它似乎对我有负面影响。有没有使用json的替代方案?或者我在这里做错了什么?数据必须以uri编码的形式发送,不是吗?

1 个答案:

答案 0 :(得分:1)

  

数据总是必须以uri编码的形式发送,不是吗?

不正确。这取决于您发送的内容类型。

如果您在发送时使用x-www-form-urlencoded内容类型,则需要对数据进行编码。例如,如果您使用multipart/form-data,则不需要。这已在here中进行了更详细的讨论。对于大量数据,我认为没有任何真正的理由使用x-www-form-urlencoded。

当然,除了更改内容类型之外,还需要提供mime边界。然而,对我而言,这听起来对你来说更有效率。来自http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4

  

内容类型“application / x-www-form-urlencoded”效率低下   用于发送大量二进制数据或包含的文本   非ASCII字符。内容类型“multipart / form-data”应该是   用于提交包含文件,非ASCII数据和表单的表单   二进制数据。