过度使用 AJAX 会影响性能吗?在大型 Web 应用程序的上下文中,您如何处理 AJAX 请求以控制异步请求?
9 回答
过度使用任何东西都会降低性能;在必要时使用 AJAX 将提高性能,特别是如果替代方案是到服务器的完整整页往返 [asp.net 术语中的“回发”]
这个故事有两个方面。
从客户端的角度来看,AJAX 通常会提高性能。与其加载整个页面,不如在需要时从服务器请求少量数据。鉴于 HTML 页面经常引用许多相关文件(图像、css、javascript 等,每个都需要来自服务器(或缓存)的命中),明智地使用 AJAX 的客户端性能可能非常出色。
在服务器端,问题变成了需要管理更多连接的问题之一。轮询应用程序,尤其是浏览器内聊天,确实会开始增加服务器的负载,因为浏览器现在访问服务器的速度要快得多。在典型的动态应用程序中(响应是由代码而不是静态文件生成的),您可能会开始遇到问题 - 但这些问题通常可以通过请求的复杂性通常低得多的事实来平衡(再次,您是'不是生成整个页面,而是页面的一小部分),因此您的平台在任何情况下都可能获得更高的吞吐量。
任何性能问题的确切结果将取决于许多因素,包括您的服务器、平台、框架和当时的主要气候条件。
我的终极建议 - 专注于创造良好的用户体验,智能开发,收集尽可能多的指标,并在您知道需要时进行优化。
AJAX 本身(作为异步请求).. 不一般。
但是,如果您有大量的 javascript 和标记,并且通过您的 xmlhttprequests 传输大量数据,那么是的,您会看到性能下降。这实际上取决于您希望您的网站如何运行,如果正确雕刻,通常可以避免任何退化。
究竟表现什么?我将假设您指的是应用程序在用户体验方面的性能。
Ajax 似乎最擅长的是仅在需要时才引起网络流量。它不是一次性下载一个很棒的网页,而是以尽可能快的方式只下载需要的内容。
然后,如果你做了一些需要更多信息的事情,它就会从网络上获取信息。
这意味着永远不会下载未使用的内容(当然,如果您设计正确 - 可以在 Ajax 中编写糟糕的代码,就像在任何其他环境中一样)。
我更喜欢将用于数据传输的 Ajax 方法和用于漂亮界面的 jQuery 等客户端库混合在一起。
根据具体情况,AJAX 可能会产生性能开销,或者它实际上可以比不使用 AJAX 的同等功能的网站具有更好的性能。
过度使用 AJAX 很容易使服务器因大量无聊的请求而过载,并且还可能成为客户端 CPU 的负担。相反,AJAX 也可用于为每个请求提供少量 HTML 和其他代码,而不是整个页面,这至少对服务器的负担较小。
Ajax 只是一个普通的 HTTP 请求,所以只要您的服务器能够处理这些请求,就不会出现问题。Ajax 的好处是用户可以更快地感知性能,因为页面不必为每个用户操作重新加载和重新绘制自身。
如果可伸缩性是一个问题,我相信您也在考虑通过向服务器场添加更多 Web 服务器来水平扩展系统。无论如何,即使是非 Ajax Web 应用程序也是如此。
AJAX 与任何技术一样,根据情况及其实施方式,可能是好事也可能是坏事。如果您对异步过程有特定需求,那么它是一个很好的工具。但是,如果您不负责任地使用它,您可能会遇到麻烦。如果您确实使用它,请尝试找到一个可以完成大部分繁重工作的良好框架,并了解 AJAX 的一些缺点...... http://learningremix.net/w2007integ/vangoori/2007/01/the_downsides_of_ajax。 shtml
我会同意这里的很多其他帖子。如果您以一种智能的方式使用它(即,不是每 30 秒使用一次 ajax),那就没问题了。我在我的网站上使用 ajax(还有一个 js 免费版本),从客户的角度来看,ajax 版本的加载速度从几乎相等到快四倍不等。这完全取决于网站的设计(图形和其他内容)以及您要更新的内容。
不利的一面是,由于您必须加载一些框架(即使您像我一样创建自己的框架),所以第一页的加载速度或任何完全刷新都会稍慢一些,并且确实会增加处理负载. 但这只是因为 ajax 提高了生产力,因此用户可以提出更多请求/更新
如果站点很忙,那么它最终会终止服务器,除非您在农场中。至于网站本身,它不应该。