0

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

我的数据以 JS 对象开始。然后我使用 json 对其进行字符串化。然后我在一个帖子中发送它。

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

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

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

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

uri 编码的字符串大 50%。当字符串开始很大时,这要大得多。

我在这里错过了什么吗?json 是标准的,但它似乎对我有负面影响。有没有使用json的替代方法?还是我在这里做错了什么?数据总是必须作为 uri 编码发送,不是吗?

4

1 回答 1

1

数据总是必须作为 uri 编码发送,不是吗?

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

如果x-www-form-urlencoded发送时使用了 content-type,则需要对数据进行编码。例如,如果您使用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 字符的文本效率低下。内容类型“multipart/form-data”应用于提交包含文件、非 ASCII 数据和二进制数据的表单。

于 2013-09-03T08:49:37.430 回答