首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Jquery中优化ajax请求?

如何在Jquery中优化ajax请求?
EN

Stack Overflow用户
提问于 2015-10-15 07:15:19
回答 8查看 14.2K关注 0票数 17

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

优化ajax请求的可能方法是什么?

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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2015-10-15 07:27:34

首先,正确编写的Ajax代码不会泄漏内存。因此,如果您确实有泄漏,这很可能是由于错误编写的代码,而不是使用Ajax。

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

  1. 将对服务器的多个请求合并为一个更大的请求。这样可以节省到服务器的往返行程,节省带宽,节省电池并提高性能。
  2. 别每时每刻都投票。更聪明地了解您每隔多长时间轮询一次服务器。
  3. 根据可能的活动延长轮询间隔以改变轮询间隔,切换到“长轮询”或切换到webSocket,这样您就可以在没有轮询的情况下执行服务器推送。
  4. 分析导致内存消耗过大的原因,修复错误或重新设计以减少内存消耗。没有理由让很多Ajax调用“泄漏”内存。它会破坏电池的寿命,但如果编码正确,就不需要泄漏内存。

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

票数 26
EN

Stack Overflow用户

发布于 2015-10-26 17:43:03

长轮询比轮询更好

如果您在一个设置的时间间隔内轮询,最好是在服务器端设置一个超时,然后等待返回消息,直到给定数目的循环。这对于SPA来说尤其有意义。然而,如果你投票,你应该增加空余时间,你得到的每一个空的回应。

按事件分组请求,而不是按实体

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

使用服务器发送的事件或套接字(如果可能的话)

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

票数 3
EN

Stack Overflow用户

发布于 2015-10-21 05:46:35

这里有几件你可以做的事

第一

  • 清除所有的内存泄漏。将您的应用程序放入沙箱,并给它尽可能多的时间来记录任何内存泄漏。调查他们并改正你的代码。

然后

  • 减少请求的数量。仔细研究应用程序中的最佳阈值,只在论文中触发您的请求。尽可能地对请求进行批处理,并将它们放入单个请求中。
  • 尽可能使用GET请求。它们相当简单,而且行动迅速。对于在其操作中触发大量请求的应用程序来说,这一步骤非常重要。
  • 仔细选择数据格式。它可以是纯文本、JSON或XML。找出对您的应用程序影响最小的一个,并适当地切换到它。如果可能的话,将服务器配置为使用数据压缩。
  • 优化服务器。对作为服务器的内容使用适当的ExpireCache-Control头。如果可能的话使用ETags
  • 尝试将您的内容放在CDN上。这可能会将资源放置在离用户更近的地理位置,并使应用程序工作得更快。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33142163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档