代码之家  ›  专栏  ›  技术社区  ›  Justin Rusbatch

长期任务的渐进式增强

  •  2
  • Justin Rusbatch  · 技术社区  · 14 年前

    我正在寻找方法来改进启动长时间运行(2分钟)服务器端任务的网页。当前版本的页面只在任务的整个持续时间内计时,这可能会让用户非常沮丧。

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

    假设服务器端进程已经尽可能地优化了,我还能做些什么来改进 全部的 用户越多越好?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Jeff Sternal    14 年前

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

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

    对于启用了javascript的用户,可以设置计时器,通过AJAX检查任务的状态,并在任务完成时向他们发出警报。

    您可以通过在页面上的公共可见位置显示挂起和完成的任务来通知非javascript用户。当然,他们必须继续浏览才能从中受益,因此您还需要明确指出,如果用户正在等待任务完成,他们应该偶尔刷新页面。

        2
  •  1
  •   garik    14 年前
    • 在数据库(或内存对象)中创建表
    • 长时间运行的任务将更新此表(对象)中的进度