java - 在基本 AJAX(如 HTTP 轮询)和反向 AJAX(如长轮询)之间进行选择时应考虑哪些因素?

标签 java javascript ajax reverse-ajax

我知道实时聊天应用程序肯定需要反向AJAX。但是其他实时功能不那么重要的应用程序又如何呢?

假设有一个类似于 Stackoverflow 上的通知功能。当人们回答您的问题时,您会收到通知。对于用户在有新答案时立即收到通知来说,这可能并不那么重要。

这种功能需要反向AJAX吗?或者将其设置为每 60 秒请求一次新通知的基本 AJAX 就足够了?基础AJAX是否消耗大量服务器资源?如何在它们之间进行选择?

最佳答案

我认为一般可以有 3 个用例:

  1. 您希望尽快向用户显示每一个更新。如果是这样,一定要使用长轮询。示例:聊天。

  2. 您不需要实时通知,大延迟也不是问题。在这种情况下,具有较大间隔的传统轮询就足够了。示例:更新用户个人资料中的一些统计信息。

  3. 第三种情况介于两者之间 - 您不需要实时更新,但仍然不希望出现很大的延迟。

    a.如果您的数据经常更改,但不需要向用户报告每一项更改,那么传统轮询可能会更好,因为它不会发送不必要的更新。

    b.如果数据很少更改,并且您希望通知每次更改,那么长轮询可能会更好,因为它不会一次又一次发送相同的数据。

正如用户489041所指出的,您还需要考虑您的服务器环境。长轮询在用户访问包含长轮询 AJAX 脚本的页面时始终保持 TCP 连接打开。如果您有数万名用户而只有一台服务器,这可能会成为一个问题。即使您的用户少于 10000 个,您也需要确保您的应用程序服务器配置为能够处理那么多的并发连接。例如,默认配置下的 Tomcat 无法处理超过 200 个并发连接。

关于java - 在基本 AJAX(如 HTTP 轮询)和反向 AJAX(如长轮询)之间进行选择时应考虑哪些因素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30848586/

相关文章:

java - Dynamodb 无法创建表

java - 从偏好中获取值(value)?

javascript - 错误函数不起作用

jquery - 没有互联网连接时的对话框

java - 在appengine中使用ajax上传文件时出现问题

java - 如何反转 DSpace 中项目 View 的显示顺序?

java - Jasper 时间序列日期轴 : show monthly ticks but yearly tick labels

javascript - 使用单选按钮显示文本区域和复选框

javascript - 找到从未命中非库代码的 Backbone.js 事件错误源

javascript - 使用 AJAX post 更改数据属性标签后 CSS 未更​​改