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