我正在寻找改进启动长时间运行(>2 分钟)服务器端任务的网页的方法。当前版本的页面仅在任务的整个持续时间内进行计时,这可能会让用户非常沮丧。
我已经有了一些关于如何改善用户体验的想法,但它们都在某种程度上涉及 AJAX 的使用。由于我之前在此项目中的经验,我知道并非所有用户都启用或可用 JavaScript。
假设服务器端流程已经尽可能优化,我还能做些什么来尽可能改善所有用户的体验?
最佳答案
将长时间运行的服务器进程移至带外。
当用户启动任务时,应用程序可以将消息写入某种队列;这通常非常快,因此用户可以快速恢复控制权。一旦消息进入队列,另一个专门的进程(服务、计划任务、cron 作业等)就会拾取它并在第一时间执行适当的任务。
对于启用了 JavaScript 的用户,您可以设置一个计时器,通过 AJAX 检查任务的状态,并在任务完成时提醒他们。
您可以通过在页面上的公共(public)可见位置显示待处理和已完成的任务来让非 JavaScript 用户了解情况。当然,他们必须继续浏览才能从中受益,因此您还需要明确用户在等待任务完成时应该偶尔刷新页面。
关于asp.net - 长期运行任务的渐进增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4078530/