在保持良好用户体验的同时调用10个API的最佳解决方案?

All*_*ins 3 php api ajax cron jquery

我有一个类似于Expedia和Priceline的网站.用户输入日期,然后调用10个不同的API来返回结果.从所有10个结果中获取结果(有时)最多需要90秒.

我想要的是在用户等待结果时显示的启动/加载屏幕(类似于Priceline).

我已经尝试使用jQuery Ajax来调用API并生成结果,但是有些浏览器会遇到问题(当结果不够快时锁定).

我在LAMP环境中,我想过使用cronjob来处理API并将结果保存在数据库中,但我不确定它会有多实用.

jfr*_*d00 6

  1. 您的所有ajax调用都需要是异步的,因此用户界面保持活动状态.这应该是显而易见的,但既然你提到了浏览器锁定,我想我最好提一下.
  2. 您可能需要了解浏览器是否对浏览器允许的并发ajax调用数量有任何浏览器窗口限制.如果他们这样做并且数量少于你想要的数量,你将不得不重新考虑事情.
  3. 你肯定想在等待结果时提出一些"加载结果..."类型的指标.
  4. 如果您的数据是可以显示渐进结果的数据类型(例如,当每个ajax调用返回时显示一些新信息),那么用户会觉得该函数比在等待所有10个完成之前显示任何内容更具响应性.
  5. 对于任何事情,只要您的电话正在进行,用户应该有一种简单的方法来停止交易并返回到您网站中的有用位置(无需杀死浏览器窗口或离开您的网站).你甚至想要不耐烦的用户至少再试一次而不是离开.
  6. 如果您在同时连接上遇到浏览器模拟,则可能希望让服务器代理请求.向您的服务器发送少量请求,然后根据需要触发尽可能多的请求并返回整理的数据.
  7. 如果请求的数据可以在服务器上有效地缓存或预取而不影响准确性,那么这可能真的有助于提高性能.
  8. 确保您处理ajax调用的所有错误条件,以便用户体验至少允许用户再次尝试,或者最好继续使用较少的结果,如果某些连接不起作用.
  9. 了解ajax代码中所有连接超时的设置,并确保它们适合您的应用程序.如果默认连接超时时间不足以封装大多数ajax调用,则可能需要延长它.
  10. 设计一个或多个ajax调用失败的情况.了解您的应用程序将会发生什么,并测试该条件,以确保所需的用户体验真正有效.
  11. 请注意(当使用异步Ajax调用时),用户可以与您的页面进行交互,因此您可能需要禁用,隐藏或以其他方式阻止与异步调用期间不应该使用的页面部分进行交互.
  12. 前一点的另一面是您可能希望在等待异步调用完成时允许某些类型的交互.例如,您可能希望允许用户改变主意并开始新请求.你可能希望他们在等待的过程的下一步中与某些东西进行交互,等等......基本上,你可以在等待进度信息,部分结果或其他工作的同时提供它们. ,他们会注意到或者在等待的时间越少.

  • 你贬低了,因为十点之一对你来说太明显了?这不是有点刺耳吗? (3认同)