浏览器暗示ajax每3秒调用一次

时间:2013-04-05 22:53:21

标签: ajax jquery firefox

如果我们的数据库中有任何更新,我们希望每隔3秒检查一次,使用jquery $ .ajax。技术很清楚,但有没有理由不解雇这么多的ajax电话? (浏览器,缓存,性能等)。 Web应用程序每个客户端每天运行大约10小时。 我们正在使用Firefox。

4 个答案:

答案 0 :(得分:1)

Ajax调用不会影响客户端(浏览器,...),但会影响服务器端。例如,每个ajax调用都是服务器上的命中。即。更多的带宽消耗,没有服务器请求命中增加反过来增加服务器负载等等.Ajax调用实际上意味着以服务器端影响为代价增加客户端友好性。

此致 拉维

答案 1 :(得分:1)

在实现无限重复的AJAX调用之前,你应该仔细考虑它们之间的任意延迟。你是怎么想出3秒的?如果您要以这种方式轮询服务器,则需要将请求频率降低到尽可能低的数量。以下是一些需要考虑的事项:

  • 您提取的数据是否真的会经常改变?
  • 您的服务器可以每3秒处理一次请求,单个请求的操作需要多长时间?
  • 您是否可以根据之前的服务器响应增加延迟或根据以前的服务器响应猜测下一次延迟应该多长时间?
  • 您可以在window loses focus时完全停止轮询,并在它再次位于前台时重新启动它。
  • 如果用户在网站中打开10次相同的页面,您的服务器应该识别出这一点并限制其响应,使用其中包含唯一值的cookie(推荐)或基于客户端IP地址。

最重要的是,考虑使用HTML 5 web sockets将数据“推送”到客户端而不是轮询,大多数现代浏览器都支持此功能。如果Web套接字不可用,可以使用几个框架回退到轮询 - 一个优秀的.NET示例是SignalR

答案 2 :(得分:0)

我每隔5秒就看到很多应用程序请求,例如远程控制(网络播放器)或聊天。因此浏览器不应该这样做。

一个好的做法是在发出新请求之前等待答案,这意味着不要使用setInterval来触发请求。 (如果用户失去连接,将阻止打开太多连接)。 同时验证在接收下一个答案时是否完成了与答案相关的所有计算。

如果您可以在服务器端访问该服务器,请将服务器配置为设置http标头Connection:Keep-Alive,这样您就不会为每个请求添加太多的TCP开销。这可以大大加快小额请求。

我看到的最后一点当然是验证服务器是否能够回答这么多请求。

答案 3 :(得分:0)

您正在寻找每3秒后的任何更改,这样,在短时间内持续获取数据时,流量会增加。它还可能会持续增加浏览器端的内存使用量。当您需要检查数据库中完成的任何更新时,您可以选择其他任何替代方案,如Sheepjax,Comet或SignalR。 (SignalR通常将数据广播给所有用户,而彗星需要许可证)。希望这可以帮到你。