2012-03-13 79 views
-1

我正在做简单的php聊天,我需要刷新消息在一个div.I尝试与jquery加载功能,但它使电脑变得缓慢。AJAX平滑刷新div

是否有简单的ajax刷新,类似Facebook的聊天?

谢谢。

+1

它是如何让你的电脑变慢? – jeroen 2012-03-13 14:56:38

+0

当有太多的PHP代码加载时,它会让它变慢 – user1245311 2012-03-13 15:00:58

+0

您是否尝试过http://css-tricks.com/dynamic-page-replacing-content? – Milap 2012-03-13 15:01:49

回答

3

在聊天的情况下,最好的解决方案可能不是取代整个DIV,而是简单地追加新消息到最后。然后一个更持久的方法是保存一堆500条消息,并用javascript进行先进先出操作。

然后,客户端仅仅轮询后端的新消息,忽略其余部分。这应该使你的后端和前端更快。

更新:

例如,HTML可能是这样的:

<div id="chat"> 
    <ul id="messages"> 
    <li><span class="time">12:13</span> User A: Hello Everybody</li> 
    <li><span class="time">12:16</span> User B: Hello A!</li> 
    </ul> 
</div> 

,那么你会使用某种类型的轮询技术,例如的Prototype.js有一个可用的周期性更新了 - http://prototypejs.org/api/ajax/periodicalupdater - 它会将请求发送到您的后端以及客户端ID和时间戳。

如果自上次选定客户端发出请求并将任何新数据发送回客户端以来发生任何更改,则后端需要查找。然后,客户端可以使用Prototype.js的插入(例如,http://bobobobo.wordpress.com/2008/05/22/the-stupidly-brief/)来简单地将新消息添加到堆栈的末尾。

显然,您也可以计算UL中LI元素的数量,如果它大于X,则删除最老的元素。