Прогрессивное улучшение для долгосрочных задач

StackOverflow https://stackoverflow.com/questions/4078530

Вопрос

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

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

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

Это было полезно?

Решение

Переместите длиннопутный серверный процесс вне полосы.

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

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

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

Другие советы

  • Создать таблицу в базе данных (или объекта памяти)
  • Долгорочная задача будет обновлять прогресс в этой таблице (объект)
  • Веб-страница отобразит данные из этой таблицы (или объекта). Как обновить страницу - это ваш выбор.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top