Answers:
这取决于您在做什么以及如何做。
如果您要用AJAX请求替换整页加载(即仅当用户单击原本的整页加载时才执行AJAX调用),那么AJAX会减少服务器负载,因为(大概)您在做更少的处理,返回的次数更少数据。
另一方面,如果要添加自动更新类型AJAX,该类型每隔几秒钟轮询一次服务器,则这可能会增加负载,具体取决于用户(如果用户一直按F5进行手动刷新,则可能不会增加服务器负载,但是大多数人通常几个小时都不会这样做)
另一个AJAX优化是在滚动时仅加载更多数据。在这种情况下,如果用户没有完全向下滚动,则浪费了处理。
当然,实际上实现可能会偏向于任何一种结果,这些都是假设合理良好实现的典型结果。
当然,它确实可以减少服务器负载。看此演示@ jsconf'09 -对于Facebook如何利用Ajax来做到这一点。
Ajax是异步的。服务器通信-您可以以多种方式使用它。人们使用它来将简单的JSON加载到实时Web以及介于两者之间的所有内容。
请记住,真正的挑战是客户端和服务器之间的平衡。努力使各方做好工作,以使系统得到优化,并且您将获得感知响应能力和真实速度的明显好处。
您还没有考虑其他因素-在大多数情况下,AJAX将增加服务器负载。在典型的非ajax方案中,用户每隔几秒钟或几分钟就加载一个大页面。是的,该页面对于服务器来说需要更多的工作,但是在请求恢复和服务其他请求之间有足够的时间。在AJAXified方案中,单页加载现在受到了许多小的打击,不断地冲击服务器并等待响应。
这有点像1000次割肉导致的死亡-没有一个请求本身如此之大,但是总重量却是致命的。尤其是当您开始考虑将这些小请求与整页请求的费用差不多时。在这两种情况下,您都可能正在整个Web应用程序管道中运行,访问数据库并坐在宝贵的HTTP连接上等待答案。
这是一个示例,说明ajax如何真正快速地在服务器上变得丑陋。让我们来看一个典型的“执行仪表盘”,其中包含4个小部件插槽。假设CEO喜欢右侧的完整销售报告,中间位置的收入最高的10个列表以及右侧的公司股价报告。假设我们将通过简单的ajax远程请求来执行此操作。现在,不考虑样式表,图像和其他资产,您的页面现在需要针对服务器进行4次HTTP往返(主页面,每个仪表板报告)。所有这些都需要完整的Web堆栈才能执行-您将要使用Web框架访问数据库并渲染HTML,对吗?现在,将单个CEO乘以2000个远程用户,其中一些用户的连接不稳定。
相反,您可能只有一个服务器端页面,该页面执行并返回HTML框架以及数据(包含在页面内JSON中)以呈现报告。单个更大的连接,但在Web服务器上的总搏动较少,因为您没有处理4个请求,也没有分配4个管道,等等。
如果HTML渲染是应用程序服务器性能配置文件的重要组成部分,那么将HTML渲染图移至客户端可能是应用程序服务器上的性能优势。
但是,如果HTML呈现只是应用程序服务器性能配置文件的一小部分,则更多的请求通常将意味着更多的行程遍历,更多的查询,应用程序服务器上的所有一切,性能损失。
当然,了解您的特定情况的唯一方法是尝试一下。
您必须考虑实施解决方案的最佳方法。一个简单的非动态表单不需要ajax,添加它实际上可能会损害性能。如果您的问题很糟糕,那么世界上所有的ajax优化都将无法为您带来可接受的性能提升。
如果您的服务器工作过度,则需要找出原因。
如果您遇到了很多热门问题,那么ajax将无法解决该问题,您需要更多容量。添加ajax只会增加服务器必须处理的请求数量。
如果页面复杂,您应该查看客户端是否可以做些什么来减少服务器的负载。如果您的页面是动态的,但是确实有有限的数据包缓存,那么进行客户端调整可能会更好。
有时Ajax会有所帮助。当您使用动态数据处理复杂表格时,ajax胜出。但是,如果查询很复杂且运行时间很长,那么ajax仍然无法解决您的问题。