如何优化Jquery中的ajax请求?[已关闭]

2022-08-30 23:09:56

我正在使用jquery mobile,jquery和php后端构建一个移动应用程序。我的问题是在某些页面中,我正在发送和接收多个ajax请求,这些请求明显降低了性能并导致内存泄漏,从而导致应用程序在低网络连接中崩溃

优化 ajax 请求的可能方法有哪些?

注意:- 我定期发送一些ajax请求(如每秒一次) 一些ajax是根据事件发送的


答案 1

首先,正确编写的Ajax代码不会泄漏内存。因此,如果您确实存在泄漏,则可能是由错误编写的代码引起的,而不是通过使用Ajax引起的。

然后,您可以考虑一些优化。

  1. 将对服务器的多个请求合并为一个更大的请求。这样可以节省到服务器的往返行程,节省带宽,节省电池并提高性能。

  2. 不要每秒轮询一次。更明智地检查服务器轮询的频率。

  3. 延长轮询间隔以根据可能的活动进行更改,切换到“长轮询”或切换到 webSocket,以便您可以在没有轮询的情况下执行服务器推送。

  4. 分析导致内存消耗过多的原因,并修复错误或重新设计以减少内存消耗。没有理由让大量的Ajax调用“泄漏”内存。它会消耗电池寿命,但如果编码正确,则不需要泄漏内存。

哦,不要犹豫,拉出一些已经存在的大规模社交Web应用程序,打开调试器,切换到网络选项卡,并研究他们正在做的事情。您也可以从已经解决此问题的大规模应用程序中学习。


答案 2

长轮询比轮询更好

如果在设置的时间间隔内轮询,最好是在服务器端设置超时,并等待返回消息,直到给定的循环数。这对于SPA尤其有意义。但是,如果进行轮询,则应通过获得的每个空响应来增加时间间隔。

按事件(而非实体)对请求进行分组

假设您每 10 秒轮询一次,以检索新邮件。此外,您每10秒轮询一次以检索更多通知。与其执行两个请求,不如只执行一个 ajax 请求并返回一个大 json 响应,然后使用它在客户端修改 DOM 元素。

如果可能,请使用服务器发送的事件或套接字

套接字或服务器发送事件将导致请求少得多,并且只有在服务器端实际发生某些事情时才会通知您。这是一个很好的比较