asp.net - 长期运行任务的渐进增强

标签 asp.net ajax progressive-enhancement

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

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

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

最佳答案

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

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

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

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

关于asp.net - 长期运行任务的渐进增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4078530/

相关文章:

css - 50个字符时文本框自动换行asp.net

asp.net - 在时间紧迫的情况下添加更多硬件 v/s 重构代码

ajax - Express.js res.render 不重定向,仅显示在控制台中

html - 没有 JavaScript 的水平滚动

javascript - 服务器端渲染和应用程序外壳模型

c# - 如何在 Entity Framework Core 中传递具有多个级别的 lambda 'include'?

c# - 返回 Task<bool> 和只返回 bool 有什么区别

javascript - 按下后退按钮时不要重新加载页面 - AngularJS

php - 为什么我的 ajax 不执行我的 sql 查询?

javascript - 如果您的网站访问者禁用了 JavaScript,您会怎么做?