如何使用ajax和php将100个对象保存到服务器?

时间:2011-02-08 22:53:56

标签: php javascript ajax object-persistence

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

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

选项1

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

  1. 获取对象定义 2。转换为json
  2. 将http发布到php控制器
  3. php控制器将其保存到文件或数据库。
  4. 选项2

    变量bigJsonString;

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

    1. 获取对象定义 2。转换为json
    2. 将json附加到字符串变量“bigJsonString”,并带有分隔符以指示对象的结束。
    3. 构建大胖bigJsonString之后

      1. 通过发送“bigJsonString”
      2. 将http发布到php控制器
      3. php控制器将其保存到文件或数据库。
      4. 在选项1中,我一个接一个地做100个http帖子。这会引发任何警报吗? 对于正在进行ajax发布的Web应用程序,这是正常的吗?

        第二种选择似乎是安全的,但唯一的问题是当100个物体成为500个物体或“ bigJsonString ”几个兆字节时。

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

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

        非常感谢。

4 个答案:

答案 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,图像,样式,脚本和视频文件。