【问题标题】:web pages with a lot of AJAX calls performance具有大量 AJAX 调用性能的网页
【发布时间】:2015-05-06 14:30:03
【问题描述】:

我的项目是一个网络移动应用程序,它使用大量的AJAX 调用服务器来刷新和检索数据,我正在使用 php 脚本从服务器获取数据。

我注意到,也有用户告诉我,有时应用程序的性能很慢。 我相信是因为AJAX的调用,我检查了我的服务器,出现这个问题时它没有任何性能问题。

很奇怪,因为当问题出现时,应用程序向服务器发送AJAX请求并卡住,直到出现超时错误,而再次发送时,它执行完美,不到一分钟就给出了答案第二个。

我检查了类似的问题,我看到使用php sessions 可以创建文件锁,并且每个请求都需要等到前一个结束。 这个问题取消了 AJAX 异步进程。 我没有使用会话,但也许我的情况相同,php scripts 执行文件锁定或其他类型的锁定并取消异步。

有人知道我该如何解决这个问题吗?

谢谢。

【问题讨论】:

  • 而不是所有 ajax 在 ajax 上发送并使用一个 json 数组数据获取所有结果
  • 我没有在不同的 AJAX 调用中调用 AJAX 调用,我只是有很多有时可以并行进行的 AJAX 调用

标签: javascript php ajax


【解决方案1】:

在创建包含大量<b>AJAX</b> 请求的应用程序时,请记住以下几点:

1.减少 Ajax 请求的数量

对于初学者来说,完全不发出 Ajax 请求可以获得最佳性能。这似乎既明显又毫无意义:放弃 Ajax 并不是真的更好 Ajax,是吗?但是有一些方法可以让你拥有你的 Ajax 蛋糕并吃掉它。第一个目标不是删除所有 Ajax 请求,而是删除不必要的请求。或者,如果您想变得激进,也可以减少不必要的请求。例如,如果您的脚本每分钟执行一次相同的 Ajax 请求,请查看每两分钟是否不是一个合理的选择。如果是这样,那么您刚刚将请求数量减半!

2.选择明智地触发 AJAX 请求的事件

您需要小心在何时何地发出 AJAX 请求。应该仔细分析事件和用户操作的重新排序以随着用户体验、数据管理和流程的增加而减少 AJAX 请求。例如,假设您有一个页面,用户可以在其中动态地重新排序项目列表。顺便说一句,您可能很想对订单的每次更改执行一个 Ajax 请求(假设该请求会将新订单保存在数据库中)。但是,用户很可能会进行多次更改,从而导致多次请求,而事实是只有最终顺序才是真正重要的。一种简单的解决方案是添加一个提交按钮供用户单击并在那时执行单个 Ajax 请求。

3.在适当的时候使用 GET 请求

说到 GET 请求类型,您还应该知道 GET 请求往往比 POST 执行得更好。公平地说,您使用哪种方式的决定主要应基于请求的详细信息:

  • GET requests are intended to retrieve information from the server.
  • POST requests are intended to cause a server reaction, such as the updating of a database record, the sending of an email, and so forth.

但 GET 请求通常更快,所以如果对哪个最合适有任何疑问,请不要过度使用 GET。

4.减少传输的数据量

Ajax 为网页带来的一个好处是,它们可以最大限度地减少需要在客户端和服务器之间来回传输的数据量。这仅仅是因为完整的网页——HTML、CSS、JavaScript 和各种媒体——不需要由浏览器下载和重新绘制,只是为了确认用户名可用或获取最新的股票报价。但是可以编写 Ajax 请求本身来发送更多或更少的数据。

首先,您可以限制服务器端资源将哪些实际数据传输回 JavaScript。接下来,您应该选择最佳的数据格式:

  • Plain text
  • JavaScript Object Notation (JSON)
  • eXtensible Markup Language (XML)

与 GET 与 POST 一样,选择数据格式还有其他因素,但请注意纯文本通常会传输最少的数据位,而 XML 可能是冗长的。当然,JSON 和 XML 能够表示比纯文本更复杂的数据,但不要忽视纯文本作为一种选择。

在更高级的级别上,您可以在返回之前压缩服务器上的数据。现代浏览器可以很好地处理GZipped 数据,尽管在 GZip 和解压缩数据所需的额外处理方面需要权衡取舍。传输GZipped 数据是一个更高级的概念,但应该引起您的注意。

5.对重复数据使用缓存

利用浏览器缓存。这仅适用于使用 Ajax 请求信息的情况,而不是用于向服务器发送数据的情况。

缓存的要点是:浏览器将存储站点资源的本地副本,以便在后续请求(在特定时间范围内)时无需重新下载它们。浏览器缓存资源的尝试也适用于通过 GET 方法发出的 Ajax 请求(这可能会在调试过程中引起头疼)。因此,如果您的 GET 请求是可缓存的,您将提高 Ajax 的性能。

但在使用缓存时要非常谨慎,并注意可用资源的阈值。


另请阅读以下内容:


我知道这是非常基本和笼统的信息,但希望这在某种程度上有所帮助...

【讨论】:

猜你喜欢
  • 2015-05-11
  • 2013-05-09
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2021-08-19
  • 2013-03-03
相关资源
最近更新 更多