0

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

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

  2. Whos online checker(检查 db 是否在线。ajax 在最后一次返回后每 30 秒循环一次)

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

到目前为止,以上 3 个是我唯一拥有的 ajax 循环,我仍在仔细检查我的代码,寻找可以修剪它的区域。

我的问题是。如果我每 5/8 秒group together the above 3 ajax post创建和循环一次它会更好地节省服务器系统资源吗?1 ajax post还是我应该保留它?

我问这个是因为我之前收到了主机的警告,说我消耗了太多的服务器系统资源(由于一个非常愚蠢的实验)。如果我再次搞砸他们会切断我的托管,所以我希望你们能理解我为什么问这种问题。

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

4

1 回答 1

1

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

  1. 频率。高效的系统通常使用一种刻度系统。在您的情况下,滴答声将是 5 秒,因为您的所有时间线都可以调整为 5 秒。是的,当然,您将一个滴答的所有传输需求归为 1 个传输。
  2. 数据量。尽量不要发送超过 1 KB 的每个滴答声。例如。使用像 csv 这样的稀疏格式,例如。XML。设置硬进入限制。压缩。像这样的东西。网络流量被打包——因此发送 1025 字节会导致分配 2KB 资源。
  3. 以某种方式对用户的不活动采取行动。例如。如果用户处于非活动状态超过一分钟,请不要用完“当前用户和目标用户之间的消息窗口”的每个刻度。会话超时时间为 20 分钟左右......
  4. 计算。使服务器端滴答响应快速而小。考虑使用内存表或 mem chaches 进行滴答处理,然后有一个十分钟左右的代理来持久存储去那里所需的内容。尽量避免在滴答响应中进行复杂的胖操作(例如 >3 db 往返)。
  5. 主持人。其他评论中也提到了这一点。一个快速的附加提示:如果您能够更改合同,您可以在签署合同之前询问您是否被允许实施该事情。有时,一般服务条款中会提到视频和即时消息等内容。

可能还有更多的东西..但这些东西立刻浮现在我的脑海里......

一般来说,也许您还应该查看https://developers.google.com/speed/docs/best-practices/rtt

于 2013-08-15T21:48:00.820 回答