Вкладка Браузер / Шаблон отслеживания окон? - PullRequest
0 голосов
/ 03 февраля 2010

Существует ли принятый шаблон для отслеживания загрузки страницы той же вкладкой / окном?

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

Например, есть места, где (между шагами) мы храним промежуточные данные в memcache, но это может вызвать проблему, если у вас нет возможности охватить эти данные этим процессом, в отличие от открывает другую вкладку / окно в том же процессе.

Это верно для многих действий / процессов.

Какой-то мозговой штурм не придумал ничего надежного.

Идеи кому-нибудь?

1 Ответ

1 голос
/ 03 февраля 2010

Вы можете поддерживать состояние многошагового процесса, используя параметры запроса (если вы используете запросы GET) или скрытые поля (если вы используете запросы POST), или оба (если вы используете POST-then-redirect), чтобы позволить пользователю обнови свой браузер).

Если вы поддерживаете состояние на сервере (например, в БД или memcached), вы можете просто сохранить «ключ транзакции» в параметре запроса или в скрытом поле.

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

EDIT:

В качестве конкретного примера:

  1. Пользователь нажимает кнопку «Начать многоэтапный процесс», что делает POST-запрос к серверу
  2. Сервер тогда
    • инициализирует состояние для процесса
    • дает ему уникальный ключ "А"
    • хранит его во временном хранилище (например, memcached)
    • перенаправляет пользователя на "/ process / A / step / 1"
  3. Следующим шагом для процесса будет "/ process / A / step / 2"
  4. Пользователь на другой вкладке снова нажимает «Начать многоэтапный процесс»
  5. Сервер делает то же самое, но
    • использует уникальный ключ "B"
    • перенаправляет на "/ process / B / step / 1"
  6. Следующим шагом для этого второго процесса будет "/ process / B / step / 2"
  7. Два процесса теперь имеют независимое состояние на стороне сервера
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...