【问题标题】:need to refresh the page content需要刷新页面内容
【发布时间】:2012-09-17 18:46:54
【问题描述】:

我正在使用 codeigniter 框架,目前正在研究社交网络之类的东西。我的问题是,当用户单击提要链接时,我需要通知用户他们的朋友活动而不重新加载页面。 我试过下面的脚本,

<script>
setInterval(function() {
$('#reload').fadeOut("slow").load('user_feeds').fadeIn("slow");
}, 10000);
</script>

它增加了我的服务器的负载。实现此目的的任何其他想法。

提前致谢。

【问题讨论】:

  • 击中目标......!我需要像脸书墙那样做。
  • 这里有什么问题?如何减轻负担?显然,每隔几秒钟从每个客户端从服务器重新加载一些东西会增加负载!要解决此问题,您必须更改服务器端的逻辑 - 发送时间戳以查看是否有更改,使用缓存,...
  • 使用普通的 AJAX 检查新项目。如果有,把它们放在那里,如果没有,什么也不做。这将大大减少负载,因为您无需再次加载整个提要。
  • 您需要找到降低服务器负载的技术。要减少 http 请求,您可以使用 Comet 技术或 ape-project 进行实时通知。另一个是为了减少服务器端负载(由服务器端编程语言php、asp或jsp引起),那么你可以使用memcache或redis等工具。

标签: php javascript jquery ajax codeigniter


【解决方案1】:

然后尝试减少时间间隔

<script>
 setInterval(function() {
 $('#reload').fadeOut("slow").load('user_feeds').fadeIn("slow");
 }, 1000);
</script>

【讨论】:

  • 页面需要非常动态,一有好友活动就应该提示用户。
【解决方案2】:

Manoj 您在此处尝试实现的是通知和驻留在服务器上的数据源,因此您无法通过浏览器通过从服务器拉取或推送来做到这一点。

您可以通过持续轮询/频繁轮询来实现拉动 - 通常通过设置超时并获取通知。

push - 理想情况下不是真正的 push,你可以通过结合 AJAX+Comet 来实现,这也可以通过长轮询来实现,在这种情况下,你与服务器保持持续连接以获取任何新的更新,并在有更新时向服务器返回数据更新。

如果这有帮助或者您需要更多信息,请告诉我

【讨论】:

【解决方案3】:

这实际上是一个非常有趣的问题,您需要的是COMET 的实现。有一个使用comet 的事件路由总线,称为COMETD。 COMETD 也有 javascript 实现和 Jquery 的绑定。 http://cometd.org/documentation/2.x/cometd-javascript

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多