1

<div>我想知道处理服务器端与客户端自动更新的利弊。我正在将 Apache 与 PHP 一起使用,但只是想在 Javascript 中伪造推送通知,如下所示:

setInterval(queryDatabaseForUnreadMessages, 60000);

function queryDatabaseForUnreadMessages(){
   $.ajax({
       url: "/messages/queryDatabaseForUnreadMessages",
       success:function(data){
          $('div#littleRedCircle').html(data);
       }
   });
}

我只想设置一个通知,就像 Stackoverflow 所做的那样(带有数字的红色小圆圈),让人们知道他们收到了一条新消息(如果存在)。那个简单的 AJAX/setInterval 组合是个坏主意吗?

4

2 回答 2

3

服务器推送的唯一缺点是实施成本(时间、金钱)

服务器推送是要走的路,因为

  1. 从用户的角度来看,实时通知更好
  2. 它具有可预测的成本(因此具有可扩展性)
  3. 减少带宽消耗
  4. 节省服务器负载

这取决于您选择哪一个的具体要求,因为服务器端推送的实现成本并非微不足道,因为它实际上不是单个 PHP 脚本的问题,而是需要深度服务器集成(也许您必须安装另一个HTTP 服务器)并涉及其他通常不使用 PHP 构建的软件(消息队列?)

于 2012-06-28T15:02:32.470 回答
2

来自 IETF 文档

长轮询与拉取对比

长轮询有什么问题? 来自文档

  1. 标题开销
  2. 最大延迟
  3. 连接建立
  4. 分配的资源
  5. 优雅降级
  6. 超时和缓存

正如我在评论中提到的

长轮询是实时的,而拉取是接近实时的 [由轮询间隔确定]

拉取客户的带宽是理所当然的:P

正如文档中提到的,这两种技术都很好地利用了 HTTP 1.1 的持久连接。

拉取很容易实现并且跨浏览器得到很好的支持。虽然Push缺乏这一点,但图书馆可以拯救 ;)。

于 2012-06-28T15:25:29.790 回答