我发布了大量数据。出于性能原因,我需要尽可能小。
我的数据以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编码的形式发送,不是吗?
答案 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数据和表单的表单 二进制数据。