Прогрессивное улучшение для длительных задач - PullRequest
2 голосов
/ 02 ноября 2010

Я ищу способы улучшить веб-страницу, которая запускает длительную (> 2 минуты) задачу на стороне сервера. Текущая версия страницы просто синхронизируется на весь период выполнения задачи, что может быть очень неприятно для пользователя.

У меня уже есть несколько идей о том, как я могу улучшить взаимодействие с пользователем, но все они будут в некоторой степени включать использование AJAX. Из-за предыдущего опыта, который я имел в этом проекте, я знаю, что не у всех пользователей включен или доступен JavaScript.

Если предположить, что процесс на стороне сервера уже максимально оптимизирован, что еще я могу сделать, чтобы максимально улучшить работу всех пользователей?

Ответы [ 2 ]

2 голосов
/ 02 ноября 2010

Переместить длительно работающий серверный процесс вне диапазона.

Когда пользователи запускают задачу, приложение может записать сообщение в какую-либо очередь;Обычно это происходит очень быстро, поэтому пользователи быстро получают контроль.Как только сообщение помещено в очередь, другой специализированный процесс (служба, запланированное задание, задание cron и т. Д.) Получает его и при первой возможности выполняет соответствующее задание.

Для пользователей с включенным JavaScript, выМожно настроить таймер для проверки состояния задачи через AJAX и оповещать их о завершении задачи.

Вы можете информировать пользователей, не являющихся пользователями JavaScript, отображая их ожидающие и завершенные задачи в общем, видимомместо на ваших страницах.Конечно, им нужно продолжать просматривать, чтобы извлечь из этого выгоду, поэтому вам также необходимо дать понять, что пользователи должны периодически обновлять страницу, если они ожидают завершения задачи.

1 голос
/ 02 ноября 2010
  • создать таблицу в базе данных (или объекте в памяти)
  • длительное задание будет обновлять прогресс в этой таблице (объект)
  • веб-страница будет отображать данные из этой таблицы (или объекта). как обновить страницу - это ваш выбор.
...