我正在寻找改进启动长时间运行(> 2分钟)服务器端任务的网页的方法。当前版本的页面只是在整个任务期间计时的,这对用户来说可能是非常令人沮丧的。针对长时间运行的任务的渐进增强
我已经有一些关于如何改善用户体验的想法,但他们都会在某种程度上涉及AJAX的使用。由于之前在这个项目中的经验,我知道并非所有用户都启用了JavaScript或可用。
假设服务器端进程已尽可能优化,我还可以做些什么来尽可能地改善所有用户的体验?
我正在寻找改进启动长时间运行(> 2分钟)服务器端任务的网页的方法。当前版本的页面只是在整个任务期间计时的,这对用户来说可能是非常令人沮丧的。针对长时间运行的任务的渐进增强
我已经有一些关于如何改善用户体验的想法,但他们都会在某种程度上涉及AJAX的使用。由于之前在这个项目中的经验,我知道并非所有用户都启用了JavaScript或可用。
假设服务器端进程已尽可能优化,我还可以做些什么来尽可能地改善所有用户的体验?
带外移动长时间运行的服务器进程。
当用户启动任务时,应用程序可以将消息写入某种类型的队列;这通常非常快,所以用户可以快速恢复控制。一旦消息排队,另一个专门的进程(一个服务,一个计划任务,一个cron作业等)就会启动并在第一时间执行相应的任务。
对于启用了JavaScript的用户,您可以设置一个计时器,通过AJAX检查任务的状态,并在任务完成时提醒他们。
您可以通过在页面上的常见可见位置显示待处理和已完成的任务,让非JavaScript用户知道。当然,他们必须保持浏览才能从中受益,所以您还需要明确指出,如果用户等待任务完成,偶尔应刷新页面。
我非常喜欢在继续浏览时显示任务完成的想法。非常好的建议,谢谢! – 2010-11-02 14:46:19
您也可以为非JavaScript用户使用标记。我个人尽量避免刷新,但对于这样的情况,在用户没有javascript的情况下,我认为适当的是每15秒左右刷新页面以更新状态。 – 2010-11-02 15:40:28
您是否考虑添加服务以将这些长时间运行的任务卸载到?然后,您的网页可以简单地开始流程,然后(如果您的最终用户的javascript允许),请轮询该服务以获取进度。这将使您能够在不中断任务的情况下继续提供页面,并改善用户体验。 – 2010-11-02 14:20:19