【发布时间】:2018-03-14 09:27:21
【问题描述】:
所以我正在制作一个聊天应用程序。我使用 ajax 每 0.5 秒检查一次数据库中的新条目(消息)。如果有则显示该消息。问服务员是不是太过分了?我使用便宜的共享托管服务。根据我目前的经验,有一半时间消息是快速流畅的,而另一半时间,尤其是在高峰时间,消息消失并且 ajax 请求有一半时间失败。有时甚至连接到数据库本身也会失败。我想知道是我对服务器要求太多还是我的服务器不好我应该考虑改变。 (或两者兼有)
【问题讨论】:
所以我正在制作一个聊天应用程序。我使用 ajax 每 0.5 秒检查一次数据库中的新条目(消息)。如果有则显示该消息。问服务员是不是太过分了?我使用便宜的共享托管服务。根据我目前的经验,有一半时间消息是快速流畅的,而另一半时间,尤其是在高峰时间,消息消失并且 ajax 请求有一半时间失败。有时甚至连接到数据库本身也会失败。我想知道是我对服务器要求太多还是我的服务器不好我应该考虑改变。 (或两者兼有)
【问题讨论】:
你有两种简单的方法,
首先是使用一些缓存机制,例如Redis缓存来保存每个用户聊天的最后状态和最后收到的消息ID,日期以摆脱对每个请求的检查数据库。
第二种方法是使用 Web-Socket 而不是客户端到服务器的请求。在这种方法中,您在客户端和服务器之间建立连接,然后一旦有新消息到达,您就直接将消息推送到客户端。
如果您想在没有任何外部工具的情况下解决您的问题,我提供给您的是第二种方式。
【讨论】:
在这种情况下,我可能会建议使用 Web Sockets,看起来它适合您的用例。
话虽如此,如果您希望您的网站在更大负载下保持高性能,我会考虑从共享帐户升级您的主机。同样真的取决于您要迎合多少用户。
【讨论】: