具有大量AJAX调用性能的网页

时间:2015-05-05 12:17:01

标签: javascript php ajax

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

我注意到,并且用户告诉我,有时应用程序性能非常慢。 我相信这是因为AJAX来电,我检查了我的服务器,并且在出现此问题时它没有任何性能问题。

这很奇怪,因为当问题发生时,应用程序会向服务器发送AJAX请求并一直停留,直到出现超时错误,再次发送时,它会表现完美,并在较少的情况下给出答案不到一秒钟。

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

任何人都知道如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:8)

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

  

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的性能。

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


另请阅读以下内容:


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