我正在尝试制作一个针对 1000-1500 个用户的聊天应用程序。目前发生的事情是,一旦我的网页加载,我每秒发出一个 ajax 请求来检查数据库中是否有任何新内容。我想知道这是否是标准做法,或者是否有更有效的方法可以在插入发生时以某种方式由服务器通知。
使用 WebSockets。或者至少是 AJAX 轮询。每秒从 1500 个客户端触发一个请求很可能会杀死您的服务器。
查看 http://socket.io/您是否愿意向堆栈引入新内容。但是,如果您仅限于PHP,则可以使用PHP的Websocket解决方案。
您的方法是称为轮询的标准方法。根据客户端的数量,这对于具有最新硬件的服务器来说应该是完全没问题的(通过AJAX
HEAD
请求,通过HTTP status
代码指示状态)。
另一种选择 - 正如 Jan 所指出的 - 称为推送。
- 优点:涉及对服务器的请求要少得多。
- 缺点:需要客户端浏览器可能提供也可能不提供的技术。
如果您选择第二种方法,请查看服务器发送的事件(W3C 草稿)。
此规范定义了一个 API,用于打开 HTTP 连接,以 DOM 事件的形式从服务器接收推送通知。该 API 经过精心设计,可以扩展以与其他推送通知方案(如推送 SMS)一起使用。