javascript:uri编码json使post数据变得更大.可供替代的

javascript: uri encoding json makes post data much bigger. Alternative?

本文关键字:编码 uri json 数据 post javascript      更新时间:2023-09-26

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

我的数据一开始是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编码的形式发送,不是吗?

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

不是这样。这取决于您发送的内容类型。

如果发送时使用x-www-form-urlencoded内容类型,则需要对数据进行编码。例如,如果你使用multipart/form-data,你就不需要了。这里已经详细讨论了这一点。对于大量的数据,我看不出有任何真正的理由使用x-www-form-urlencoded。

当然,它不仅仅是更改内容类型,还需要提供mime边界。然而,在我看来,这对你来说确实更有效率。从…起http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4:

内容类型"application/x-www-form-urlencoded"效率低下用于发送大量二进制数据或包含非ASCII字符。内容类型"多部分/表单数据"应为用于提交包含文件、非ASCII数据和二进制数据。