逐步增强长期运行的任务

时间:2010-11-02 14:14:08

标签: asp.net ajax progressive-enhancement

我正在寻找改进启动长期(> 2分钟)服务器端任务的网页的方法。页面的当前版本仅在任务的整个持续时间内计时,这对用户来说非常令人沮丧。

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

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

2 个答案:

答案 0 :(得分:2)

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

当用户启动任务时,应用程序可以将消息写入某种队列;这通常非常快,因此用户可以快速获得控制权。消息排队后,另一个专门的进程(服务,计划任务,cron作业等)会在第一次机会时选择并执行相应的任务。

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

您可以通过在您网页上的公共可见位置显示待处理和已完成的任务来保持非JavaScript用户的通知。当然,他们必须继续浏览才能从中受益,因此您还需要明确用户是否应该在等待任务完成时偶尔刷新页面。

答案 1 :(得分:1)

  • 在数据库(或内存中对象)中创建表
  • 长时间运行的任务将更新此表(对象)的进度
  • 网页将显示此表(或对象)中的数据。如何刷新页面 - 这是你的选择。