我正在寻找改进启动长时间运行(> 2 分钟)服务器端任务的网页的方法。当前版本的页面只在任务的整个持续时间内计时,这对用户来说可能非常令人沮丧。
关于如何改善用户体验,我已经有了一些想法,但它们都会在某种程度上涉及 AJAX 的使用。由于我之前在这个项目上的经验,我知道并非所有用户都启用或使用 JavaScript。
假设服务端的流程已经尽可能的优化了,我还能做些什么来尽可能的提升所有用户的体验呢?
我正在寻找改进启动长时间运行(> 2 分钟)服务器端任务的网页的方法。当前版本的页面只在任务的整个持续时间内计时,这对用户来说可能非常令人沮丧。
关于如何改善用户体验,我已经有了一些想法,但它们都会在某种程度上涉及 AJAX 的使用。由于我之前在这个项目上的经验,我知道并非所有用户都启用或使用 JavaScript。
假设服务端的流程已经尽可能的优化了,我还能做些什么来尽可能的提升所有用户的体验呢?
将长期运行的服务器进程移到带外。
当用户启动任务时,应用程序可以将消息写入某种队列;这通常非常快,因此用户可以快速获得控制权。一旦消息被排队,另一个专门的进程(服务、计划任务、cron 作业等)会在第一时间将其拾取并执行适当的任务。
对于启用了 javascript 的用户,您可以设置一个计时器以通过 AJAX 检查任务的状态,并在任务完成时提醒他们。
您可以通过在页面上一个常见的可见位置显示他们待处理和已完成的任务来让您的非 JavaScript 用户了解他们的信息。当然,他们必须继续浏览才能从中受益,因此您还需要明确用户在等待任务完成时应该偶尔刷新页面。