我有一个通过AJAX调用运行的PHP脚本,有时可能需要很长时间(最多30秒)。为了帮助保持访问者的注意力,我展示了一个进程栏,介绍进程的程度,以及列出有关Web应用程序的随机事件等等。开幕和闭幕会议是否会影响效果?
为了更新进度条以显示这个过程在一个%中究竟有多远,脚本向会话写入什么是“过程”的状态,“总量”是它需要做的量,“进度”是说完成了多少。在进行长时间的AJAX调用的同时,另一个单独的AJAX调用会显示一个列出这3个会话变量的页面,以便它可以将其转化为JavaScript中的精确进度条,并且每0.5秒左右重复一次。
的问题是,为了这第二个AJAX调用能够检索会话数据,会话必须关闭。所以在长度脚本中,它打开会话,写入数据,然后关闭它。
有没有造成这样做任何显著的性能损失?是否有更好的选择来显示漫长的AJAX呼叫有多远?
编辑:我应该更仔细地选择我的话。这个过程需要花费30多秒,而且有必要展示一个真正的进度条,而不是重复的gif。改变算法后,现在平均只需要1-5秒,但我猜测在极端情况下可能会达到10秒。它是异步的,页面上还有其他内容,他们必须选择启动该进程。他们可以去其他页面,甚至关闭窗口,稍后再回来查看完成。现在时间跨度明显较低,我想知道如果我试图展示一个“真正”的进度条,或者如果有另一种替代方法,我是否会伤害其快速性能。
它不会阻止用户做任何事情。这是网页应用程序的一部分,如果他们选择运行,而网页上仍有大量其他内容可用。它也被设置好,以便他们可以进入其他页面,如果他们想要的话,回来看看是否完成。它也不再需要30秒,除非有一些极端的情况(绝对不应该),因为我将它切换到更快的算法。尽管如此,我仍然希望让他们更新进度,即使现在只有4-5秒。 – Nick 2010-10-29 20:14:16