2

假设我有一个包含 100 个对象的页面,当转换为 json 时,每个页面大约有 700 个字节。

为了将对象保存到基于 php 的控制器中,我有以下选项。

选项1

对于每个对象(100 个对象),请执行以下操作

  1. 取对象定义 2 .convert 为 json
  2. 将 http 发布到 php 控制器
  3. php 控制器将其保存到文件或数据库中。

选项 2

变量 bigJsonString;

对于每个对象(100 个对象),请执行以下操作

  1. 取对象定义 2 .convert 为 json
  2. 将 json 附加到带有分隔符的字符串变量“bigJsonString”以指示对象的结尾。

构造大胖bigJsonString后

  1. 通过发送“bigJsonString”将 http 发布到 php 控制器
  2. php 控制器将其保存到文件或数据库中。

在选项 1 中,我一个接一个地做 100 个 http 帖子。这会引起任何警报吗?这对于执行 ajax 发布的 Web 应用程序是否正常?

第二个选项似乎安全,但唯一的问题是当 100 个对象变成 500 个对象或“ bigJsonString到几兆字节时。

我们可以引入的第三个选项是选项 1 和 2 的混合体,我们首先构建“ bigJsonString ”,如果长度达到一定限制,则执行 ajax 发布。刷新字符串并为剩余的对象再次构建字符串。

有什么陷阱,什么是正常或标准做法。如果有人可以指出已经分析过的资源,那就太好了。

非常感谢。

4

4 回答 4

1

这取决于您将对象发布到服务器的速度。如果每秒钟都发布 json 对象,那么每个帖子 1 个对象还不错。但是如果你在一秒钟内发布 100 个,你真的需要建立一个大的请求。

每个请求都会有很大的延迟。就性能而言,构建大型多对象 json 字符串更为可取。

如果其中一个对象有错误怎么办?您需要确保它不会转储停止处理所有其他对象,否则用户将不得不再次上传所有这些数据。

如果您执行多个请求,您可以在客户端提供更好的用户反馈,因为您确切知道自己在对象队列中的位置。

平衡这一切取决于你。

祝你好运。

于 2011-02-08T23:01:06.890 回答
1

浏览器通常会将与单个域的连接数限制为较低的数量(大多数浏览器默认为 20 以下)。与此同时,您的许多请求都会被阻止。

另一方面,较大的请求将需要更长的时间才能完全处理,因为并行化的机会较少。

理想情况下,你会尝试这两种方法,看看哪一种最有效。

注意:对于第二种方法,您可以创建一个对象数组,然后将该数组序列化为JSON,而不是手动处理 JSON 字符串。(JSON 支持数组,而不仅仅是对象!)

于 2011-02-08T23:01:40.273 回答
1

我猜它的情况。但是,我看不到一次(本身)向服务器发送 100 个请求的任何情况。

就个人而言,我只是将每个对象推送到一个 javascript 数组并将该数组的 JSON 表示形式发送到 PHP,这样您就不必担心分隔符。

于 2011-02-08T22:58:58.497 回答
0

选择选项 2,bigJsonString。传递几兆字节长的消息应该没有问题 - 相同的基础设施用于通过 Internet 传递更大的 html、图像、样式、脚本和视频文件。

于 2011-02-08T22:58:32.480 回答