我有一个网站,完全用php和基本的jquery ajax编码。然而,在我了解了node.js / socket.io之后,我使用nodejs和socket.io重新编码了几乎涉及ajax的所有实时内容。关于我是否做对了,我有点困惑。所以我的问题是ajax什么时候比使用node / socket更优化?
答案 0 :(得分:10)
首先,你应该了解两者之间的区别,答案会变得清晰。
AJAX用于简单的异步请求。它们不需要设置节点服务器,几乎每个浏览器都支持它。当您需要从服务器检索一条信息时使用它们。但它们确实具有通过HTTP发送的开销,因此它们需要是正确的HTTP请求/响应(增加重量)。
当您经常访问某些数据或需要与服务器建立实时,持久的连接时,将使用WebSockets(在Node.js / socket.io设置中可用)。您可以建立套接字连接并将数据包从服务器发送到客户端。与AJAX解决方案相比,这是轻量级的,但旧版浏览器不支持Websockets,您需要设置一个能够处理此类请求的服务器。
Socket.IO特别使用不同技术的集合,以便您可以获得更好的浏览器支持:长轮询,多部分流等。这使您可以从服务器获得“即时”反馈,但它仍然在大多数情况下案例使用HTTP作为协议。但是,如果它们可用(即由浏览器支持),它将使用WebSockets。
实际上在某些情况下Node.js / Socket.io 将使用AJAX 。
如果您没有在线游戏,或者您不需要经常更新应用程序的状态,我建议您使用AJAX而不是Node.js / socket.io设置。
答案 1 :(得分:4)
Nodejs非常适合需要在客户端和服务器之间保持持久连接的应用程序。基本上,如果你想在客户端和服务器nodejs之间发送实时数据(聊天客户端,游戏等)是一个很好的选择。
使用nodejs,这种持久连接不会阻止其他请求。许多其他语言如php(其中每个连接启动一个新的服务器进程)在这种情况下都会遇到困难,最终可能会导致巨大的CPU负载。
如果目标是具有最低延迟的实时数据,那么Socket.io和node.js是一个更好的选择。当其他技术不受支持时,它只会回溯到长轮询,它的首选是使用Web套接字。
当然apache(使用php)和nodejs都可以执行AJAX,问题应该是这是否是您传输数据的正确方法,我们需要更多地了解您要实现的目标!