我该如何处理许多AJAX调用?

时间:2012-12-06 14:57:09

标签: javascript jquery ajax http client-side

我正在尝试编写一个可以与我的服务器一起工作的插件。每个页面加载都会调用我的服务器的AJAX调用数据,服务器应该返回一个简单的字符串。

现在我正在努力了解这类程序的最佳方法。

我是否应该在每次需要数据时创建一个AJAX调用,或者是否有一些方法可以创建一个开放连接(尽管网页有变化)以节省服务器电源?

我应该以某种方式听一些端口或类似的东西吗?

我是否有其他选择或我该怎么做才能以最有效的方式做到这一点?

3 个答案:

答案 0 :(得分:2)

您可以使用HTML5 websockets (http://www.html5rocks.com/en/tutorials/websockets/basics/) 如果您使用这种方法,那么您将需要重新考虑编写Web服务器的方式,因为websockets不遵循AJAX的请求 - 响应范例。相反,他们使用连接来传输数据,因此您需要在服务器上打开一个端口并监听它,这样做的方式取决于您使用的语言或框架。这种方法速度快,反应灵敏,但只适用于大多数现代浏览器。

其他方法是使用长轮询(http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery)。某些聊天客户端使用此功能。它可以向服务器发送AJAX请求,服务器接收它并让它等待,直到数据可用,然后发送响应。然后客户端发出另一个请求,等待并重复。

可能您几乎不想将简单的字符串发送到客户端。使用XML或JSON对响应进行编码几乎总是更好。

答案 1 :(得分:1)

只需创建一个简单的AJAX调用并将其放在每个页面上,或者将其保存为自己的文件,并在标题中的每个页面上放置一个服务器。就这么简单!

$(document).load(function(){    

    $.ajax({
        type: "POST",
        url: "/where_your_string_is.php",
        success: function(msg){

            $("#stringHolder").html(msg);

            }

    }); 

});     

答案 2 :(得分:0)

Websockets API允许双向通信,但我刚刚发现,如果您只需要提取数据,则可以使用另一个名为HTML SSE的选项。因此,如果你偶然发现了这个问题,也可以考虑这个选项。