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

What factors should take into consideration when choosing between basic AJAX (like HTTP polling) and reverse AJAX (like Long Polling)?

我知道实时聊天应用程序肯定需要反向AJAX.But其他实时功能不那么重要的应用程序怎么样?

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

这种功能需要反向AJAX吗?或者将其设置为每 60 秒请求一次新通知的基本 AJAX 就足够了吗?基本的AJAX 会不会消耗很多服务器资源?如何取舍?

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

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

  2. 您不需要实时通知,大的延迟不是问题。在这种情况下,具有较大间隔的传统轮询对您来说已经足够了。示例:更新用户配置文件中的一些统计信息。

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

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

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

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