2010-11-02 107 views
2

我正在寻找改进启动长时间运行(> 2分钟)服务器端任务的网页的方法。当前版本的页面只是在整个任务期间计时的,这对用户来说可能是非常令人沮丧的。针对长时间运行的任务的渐进增强

我已经有一些关于如何改善用户体验的想法,但他们都会在某种程度上涉及AJAX的使用。由于之前在这个项目中的经验,我知道并非所有用户都启用了JavaScript或可用。

假设服务器端进程已尽可能优化,我还可以做些什么来尽可能地改善所有用户的体验?

+0

您是否考虑添加服务以将这些长时间运行的任务卸载到?然后,您的网页可以简单地开始流程,然后(如果您的最终用户的javascript允许),请轮询该服务以获取进度。这将使您能够在不中断任务的情况下继续提供页面,并改善用户体验。 – 2010-11-02 14:20:19

回答

2

带外移动长时间运行的服务器进程。

当用户启动任务时,应用程序可以将消息写入某种类型的队列;这通常非常快,所以用户可以快速恢复控制。一旦消息排队,另一个专门的进程(一个服务,一个计划任务,一个cron作业等)就会启动并在第一时间执行相应的任务。

对于启用了JavaScript的用户,您可以设置一个计时器,通过AJAX检查任务的状态,并在任务完成时提醒他们。

您可以通过在页面上的常见可见位置显示待处理和已完成的任务,让非JavaScript用户知道。当然,他们必须保持浏览才能从中受益,所以您还需要明确指出,如果用户等待任务完成,偶尔应刷新页面。

+0

我非常喜欢在继续浏览时显示任务完成的想法。非常好的建议,谢谢! – 2010-11-02 14:46:19

+1

您也可以为非JavaScript用户使用标记。我个人尽量避免刷新,但对于这样的情况,在用户没有javascript的情况下,我认为适当的是每15秒左右刷新页面以更新状态。 – 2010-11-02 15:40:28

1
  • 创建表数据库(或内存中的对象)
  • 长时间运行的任务将更新该表中(对象)的进展
  • 网页会从这个表(或对象)显示数据。如何刷新页面 - 这是您的选择。