2010-11-02 2 views
2

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

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

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

+0

Рассматривали ли вы возможность добавления службы для выгрузки этих долговременных задач? Затем ваши веб-страницы могут просто начать процесс, а затем (если это позволяет javascript вашего конечного пользователя), опросите эту службу, чтобы получить прогресс. Это позволит вам продолжать обслуживать страницы, не прерывая задачу и не улучшая работу пользователя. –

ответ

2

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

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

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

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

+0

Мне очень нравится идея отображения задач по мере их продолжения. Отличное предложение, спасибо! –

+1

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

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