何时使用node.js以及何时使用ajax?
我有一个网站,这是完全在PHP和基本的jQuery阿贾克斯编码。 然而,当我了解到node.js / socket.io之后,我几乎重新编写了所有使用nodejs和socket.io的ajax实时内容。 我有点困惑,我是否做了正确的事情。 所以我的问题是何时是ajax比使用节点/套接字更优化的解决scheme?
首先,你应该了解两者的区别,答案就会变得清晰。
AJAX用于简单的asynchronous请求。 他们不需要build立一个节点服务器,几乎每个浏览器都支持它。 当你需要从服务器获取一条信息时使用它们。 然而,它们具有通过HTTP发送的开销,因此它们需要是正确的HTTP请求/响应(增加了重量)。
WebSockets(在Node.js / socket.io安装程序中提供)用于频繁访问某些数据,或者需要与服务器build立持久的连接。 您可以build立套接字连接,并将数据包从服务器发送到客户端。 与AJAX解决scheme相比,这是轻量级的,但旧版浏览器不支持Websockets,而且您需要设置一个处理这些请求的服务器。
特别是Socket.IO使用了一系列不同的技术,以便获得更好的浏览器支持:长轮询,多部分stream等。这可以让你从服务器得到“即时”的反馈,然而在大多数情况下,它仍然使用HTTP作为协议。 但是,如果它们可用(即由浏览器支持),它将使用WebSocket。
实际上在某些情况下Node.js / Socket.io 会使用AJAX 。
如果你不是在线游戏,或者你不需要经常更新应用程序的状态,我会build议使用AJAX而不是Node.js / socket.io安装程序。
Nodejs适用于需要在客户端和服务器之间保持持续连接的应用程序。 基本上,如果你想发送实时数据(聊天客户端,游戏等)之间的客户端和服务器nodejs是一个很好的select。
使用nodejs这种持久连接不会阻止其他请求。 许多其他语言,如PHP(每个连接开始一个新的服务器进程)在这种情况下奋斗,你可能最终会有巨大的CPU负载。
如果具有最低延迟的实时数据是目标,则将Socket.io和node.js放在一起是更好的select。 只有在不支持其他技术的情况下,才会回到长轮询状态,其优先select是使用networking套接字。
当然,apache(使用php)和nodejs都可以使用AJAX,问题应该是这是否是您传输数据的正确方法,我们需要更多地了解您想要实现的目标!
- 从ajax响应返callback用javascript函数后,页面保持刷新
- 使用Pebble.js获取AJAX请求时出错
- nodejs hapiJs:发送,接收来自客户端的数据
- Node.js – 致命错误:v8 :: Debug :: SetDebugMessageDispatchHandler V8不再可用
- 如何parsingNodeJS服务器中由ajax发送的数组/对象
- AJAX在静态路由上使用Express进行爬取
- 设置Access-Control-Allow-Origin不适用于AJAX / Node.js
- Node.js和Express; 开机自检404
- 我怎么能一次testing/发送多个(假的)ajax请求到一个(node.js)服务器?