我需要建立一个可以处理 100 个查询/秒的网络规模的公共站点。我想使用 Ajax 使其具有交互性。Ajax 必须在所有主流浏览器和所有合理情况下(停止、从客户端重新启动页面;离开终端一整夜后第二天回来等)都是防弹的。服务器将是一个分布式 Linux 农场。
Jquery $.post() 似乎可以满足要求。
在过去,Ajax 是通过巧妙的方案实现的,以保持服务器和客户端之间的套接字打开。然后,此方法支持“Ajax Push”,也称为“HTTP Server Push”或“Comet”,这是一种允许服务器向客户端发起数据包的双向通信管道。
我看到的这种 Ajax 方法的主要问题是,它显然会在服务器上无限期地占用一个套接字。这似乎无法扩展。次要问题是一夜之间断开调制解调器连接会破坏管道。从保存的本地版本重新加载页面可能不会重新建立实时管道;并且各种浏览器需要各种不可靠的 hack 才能让 Ajax 首先工作。
使用基于发布请求的 Ajax 严格的“客户端拉动”模型似乎可以解决所有这些缺点。如果我能获得一个防弹的实现基础,我很乐意放弃未经请求的服务器推送的能力。
所以我使用了一个简单的
调用,至少对于 Firefox 和 Safari 来说它似乎工作得很好。
$.post( 'serverAjaxModule.php' ,
{mydata: Dataword },
function(output){ do_handle_results( output); });
但是,我不知道这是在做什么。我了解到 .post 是 .ajax 的宏,并且似乎有一些命令,例如 .ajaxSetup 和 .ajaxStart,它们的名称似乎使它们成为要求。然后是jquery-ui.min.js
包含,它几乎可以运行任何设置。
那么我的问题:
jquery $.post 是否可以很好地扩展到大量使用?
$.post 是使用旧的连续打开套接字范例实现的,还是每次我执行客户端拉取 ajax 消息时都会建立一个新的套接字连接?影响?
我是否认为我不需要调用任何额外的东西,例如 .ajaxSetup 或 .ajaxStart 等,我可以继续成功调用 $.post 而不会产生任何异常后果?
这个特性的 jquery 跨浏览器功能有多好?我可以依靠它简单地为基本上所有合理的现代浏览器工作,还是有一些我必须注意的已知浏览器?
这种 Ajax 技术方法适用于古代浏览器有多远?.post 似乎正在使用往返 POST 技术,它应该是完全通用且防弹的;但我似乎记得一些旧技术的案例,有些浏览器太旧而无法支持 Ajax,我们不得不费力地围绕它编写代码。那些日子已经一去不复返了,现在,有了新的 jquery?在文明的国际世界中,我有多少需要担心非 Ajax 支持?
还有什么要注意的吗?如果您刚刚开始构建一个可大规模扩展的实现,您希望有人告诉您有关创建动态、交互式 Web 体验的最重要的几点是什么?
非常感谢您的友好帮助。