假设我有一个包含100个对象的页面,当转换为json时,每个页面大约有700个字节。
为了将对象保存到基于php的控制器,我有以下选项。
选项1
对于每个对象(100个对象),请执行以下操作
选项2
变量bigJsonString;
对于每个对象(100个对象),请执行以下操作
构建大胖bigJsonString之后
在选项1中,我一个接一个地做100个http帖子。这会引发任何警报吗? 对于正在进行ajax发布的Web应用程序,这是正常的吗?
第二种选择似乎是安全的,但唯一的问题是当100个物体成为500个物体或“ bigJsonString ”几个兆字节时。
我们可以介绍的第三个选项是选项1和2的混合,我们首先构建“ bigJsonString ”,如果长度达到某个限制,则执行ajax发布。刷新字符串并再次为剩余的对象构建字符串。
什么是陷阱,什么是正常或标准的做法。如果有人可以指出已经分析过的资源,那就太好了。
非常感谢。
答案 0 :(得分:1)
我猜它的态势。但是,我没有看到任何情况下,一次向服务器发送100个()本身就是好的。
就个人而言,我只是将每个对象推送到javascript数组并将数组的JSON表示发送给PHP,这样您就不必担心分隔符了。
答案 1 :(得分:1)
这取决于您将对象发布到服务器的速度。如果json对象被发布说每秒,每个帖子1个对象也不错。但如果你在一秒内发布100,你真的需要建立一个大的请求。
每个请求都会有明显的延迟。就性能而言,构建大型多对象json字符串是优选的。
如果其中一个对象出错,该怎么办?您需要确保它不会转储所有其他对象的停止处理,否则用户将不得不再次上传所有数据。
如果你做多个请求,你可以提供更好的用户反馈客户端,因为你确切知道你在对象队列中的位置。
由你来平衡这一切。
祝你好运。答案 2 :(得分:1)
浏览器通常limit the number of connections to a single domain为低数字(大多数浏览器默认为20以下)。与此同时,您的许多请求都将被阻止。
另一方面,较大的请求需要更长的时间才能完全处理,因为并行化的机会较少。
理想情况下,您可以尝试两种方法,看看哪种方法最有效。
注意:对于第二种方法,您可以创建对象的数组,然后将数组序列化为JSON,而不是手动处理JSON字符串。 (JSON支持数组,而不仅仅是对象!)
答案 3 :(得分:0)
选择选项2,bigJsonString。传递几兆字节的消息应该没有问题 - 相同的基础结构用于通过互联网传递更大的html,图像,样式,脚本和视频文件。