什么比保存服务器系统资源更好

时间:2013-08-15 17:22:11

标签: php mysql jquery resources chat

我制作了私人聊天系统。到目前为止,聊天中有3个jquery ajax post脚本在循环中调用服务器以获取新数据。

  1. 当前用户与目标用户之间的消息窗口(ajax获取数据库上最后一条消息的时间戳,并将其与显示的上一条消息时间戳进行比较。获取所有消息&gt ;比上一条消息时间戳并在消息窗口中显示它。在最后一次返回后,ajax每5秒循环一次。)

  2. 谁在线检查(在线检查数据库。在最后一次返回后每30秒循环一次ajax)

  3. 谁向当前用户发送消息(在消息窗口中检查并获取不是当前目标用户的用户并向当前用户发送消息。最后一次返回后每隔15秒ajax循环)< / p>

  4. 到目前为止,上面的3个是我唯一的ajax循环,我仍然会仔细检查我的代码,看看我可以修剪它的区域。

    我的问题是。如果我group together the above 3 ajax post创建1 ajax post并每隔5/8秒循环一次,那么保存服务器系统资源会更好吗?或者我应该把它留下来?

    我问这个是因为我收到了来自我的托管的警告,之前我消耗了太多的服务器系统资源(由于非常愚蠢的实验)。如果我再次陷入困境,他们会削减我的托管,所以我希望你们明白为什么我会问这个问题。

    额外的细节:我使用jquery ajax与一个从mysql db获取数据的php脚本交谈。请求的循环在客户端完成。

1 个答案:

答案 0 :(得分:1)

Websockets非常棘手。因此,如果您决定使用ajax,则需要考虑几个因素:

  1. 频率。高效系统通常使用一种滴答系统。在你的情况下,勾选将是5秒,因为你的所有时间线都可以被制作为5秒的机智。当然,您可以将所有传输需求分组为1个传输。
  2. 数据量。尽量不要每个tick发送超过1KB的字节。例如。使用像csv这样的稀疏格式。 XML。设置硬入场限制。压缩。像这样的东西。网络流量是打包的 - 因此发送1025字节会导致分配2KB资源。
  3. 以某种方式处理用户的不活动。例如。不要用尽当前用户和目标用户之间的&#34;消息窗口的每个勾号&#34;如果用户处于非活动状态超过一分钟。会话超时20分钟左右......
  4. 计算。使服务器端勾选响应QUICK和small。考虑使用内存表或mem chaches进行刻度处理,然后有一个十分钟左右的代理存储持久性需要去那里。尽量避免在滴答响应中进行复杂的脂肪操作(例如,> 3分贝往返)。
  5. 主持人。其他评论也说了这一点。一个快速的额外提示:如果您能够更改合同,您可以询问在签订合同之前是否允许您实施该项目。有时在一般服务条款中会提到视频和即时消息等内容。
  6. 可能还有更多的事情......但是我立即想到了这些......

    一般情况下,您也应该查看https://developers.google.com/speed/docs/best-practices/rtt