首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在保持良好用户体验的同时调用10个API的最佳解决方案?

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

Stack Overflow用户
提问于 2011-07-24 02:08:28
回答 3查看 180关注 0票数 3

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

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

我曾尝试使用jQuery Ajax调用API并生成结果,但一些浏览器遇到了问题(当结果不够快时会锁定)。

我在LAMP环境中,我想过使用cronjob来处理API并将结果保存在数据库中,但我不确定这是否实用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-24 02:16:12

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

Stack Overflow用户

发布于 2011-07-24 02:16:43

你有没有尝试过像beanstalkd这样的东西?似乎如果延迟高达90秒,您应该将作业排队,并在结果准备就绪时通知用户,而不是同步运行作业并显示长时间运行的启动页面。要实现推送通知,请尝试jQuery Comet

票数 1
EN

Stack Overflow用户

发布于 2011-07-24 02:27:33

如果你需要一次显示所有的结果,只需调用一次php页面,然后让它通过curl来完成调用。但请记住设置时间限制。

否则,将工作拆分到两到四个页面中,并对每个页面执行ajax调用。在每个返回时,显示这些结果。在这种情况下,一个简单的加载图像就足够了。这里没有水花。

并记住缓存您可以缓存的内容。

*编辑

请注意,这里我的重点是php执行api调用。你的服务器与它的T1+连接肯定会处理10个呼叫比我的拨号速度快。:)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6802302

复制
相关文章

相似问题

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