Php 何时使用node.js以及何时使用ajax?

Php 何时使用node.js以及何时使用ajax?,php,javascript,ajax,node.js,Php,Javascript,Ajax,Node.js,我有一个网站,完全用php和基本的jQueryAjax编写。然而,在我了解node.js/socket.io之后,我使用nodejs和socket.io记录了几乎所有涉及ajax的实时内容。对于我是否做了正确的事情,我有点困惑。所以我的问题是,什么时候ajax是比使用node/socket更理想的解决方案?首先,您应该了解两者之间的区别,答案会变得很清楚 AJAX用于简单的异步请求。它们不需要设置节点服务器,几乎所有浏览器都支持它们。当您需要从服务器检索一段信息时,可以使用它们。但是,它们确实有

我有一个网站,完全用php和基本的jQueryAjax编写。然而,在我了解node.js/socket.io之后,我使用nodejs和socket.io记录了几乎所有涉及ajax的实时内容。对于我是否做了正确的事情,我有点困惑。所以我的问题是,什么时候ajax是比使用node/socket更理想的解决方案?

首先,您应该了解两者之间的区别,答案会变得很清楚

AJAX用于简单的异步请求。它们不需要设置节点服务器,几乎所有浏览器都支持它们。当您需要从服务器检索一段信息时,可以使用它们。但是,它们确实有通过HTTP发送的开销,因此它们需要是正确的HTTP请求/响应(增加权重)

WebSocket(可在Node.js/socket.io设置中使用)用于频繁访问某些数据或需要与服务器建立实时、持久的连接。您可以建立套接字连接并将数据包从服务器发送到客户端。与AJAX解决方案相比,这是轻量级的,但是WebSocket不受旧浏览器的支持,您需要设置一个服务器来处理此类请求

尤其是Socket.IO使用了一系列不同的技术,因此您可以获得更好的浏览器支持:长轮询、多部分流等。。这允许您从服务器获得“即时”反馈,但是在大多数情况下,它仍然使用HTTP作为协议。但是,如果WebSocket可用(即浏览器支持),它将使用WebSocket

实际上,在某些情况下Node.js/Socket.io将使用AJAX


如果您没有在线游戏,或者不需要经常更新应用程序的状态,我建议您使用AJAX而不是Node.js/socket.io设置。

Nodejs非常适合需要在客户端和服务器之间保持持久连接的应用程序。基本上,如果您想在客户端和服务器节点之间发送实时数据(聊天客户端、游戏等),nodejs是一个不错的选择

使用nodejs,这种持久连接不会阻止其他请求。许多其他语言,如php(每个连接启动一个新的服务器进程),在这种情况下都会遇到困难,最终可能会导致巨大的CPU负载

如果以尽可能降低延迟的实时数据为目标,那么Socket.io和node.js结合在一起是更好的选择。只有当其他技术不受支持时,它才会回到长轮询,它的首选是使用web套接字


当然,apache(使用php)和nodejs都可以使用AJAX,问题应该是这是否是传输数据的正确方式,我们需要更多地了解您想要实现的目标

这就像在问,手术时使用地毯还是排球时使用牙刷更为理想。你需要正确使用你的术语。+1很好的解释。希望您能进一步扩展它,但是我的应用程序与服务器的每次连接apache都会为每个线程分配单独的线程,因此会消耗大量资源,目前我已经设置了apache/NodeJ。我的意思是,如果我使用ajax每20秒更新一次新闻提要或填充弹出窗口,它不会占用大量资源吗?您在第2段中描述的是WebSockets,而不是SocketIO。SocketIO提供类似web套接字的支持,使用当前浏览器支持的任何传输;无论是WebSocket、iframe、long polling还是flash。是的,我使用的是php,我不想在node.js中对整个网站进行编码。@AnuragD:你不必在node.js中对整个网站进行编码,你可以使用php作为“内容/布局生成器”,并将node.js作为“服务提供商”,提供网站所需的数据。当然,这需要两台服务器。