2010-10-21 9 views
0

В основном на моем веб-сайте у меня есть боковая панель со стопкой ящиков; каждый ящик может быть скомпенсирован или расширен пользователем. Мне нужно сохранить статус каждого окна для текущего пользователя. Я не хочу использовать файлы cookie, потому что, если пользователь изменяет браузер или компьютер, все флажки перейдут в статус по умолчанию.Лучший способ сохранить статус динамического веб-интерфейса

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

Редактировать: Что делать, если пользователь нажимает на кнопку переключения несколько раз, как десять раз за две секунды, только потому, что ему нравится анимация ящиков? Через две секунды он выполнит десять запросов. Так что, может быть, вопрос должен быть: , когда следует сохранить эти данные?

ответ

1
  1. Вызывать (измененную) функцию каждый раз при изменении поля.

  2. Сохранять два элемента (на стороне клиента): время отправки последнего обновления на сервер и установлен ли таймер.

  3. Напишите (на стороне клиента) функцию «обновления», которая отправляет обновление и обновляет состояние, чтобы отметить, что последнее обновление было только что.

  4. Когда вызывается измененная функция: если установлен таймер, немедленно возвращайтесь; если обновление не было отправлено или последнее сообщение было отправлено более десяти секунд назад, затем вызовите функцию обновления и верните ее. В противном случае установите таймер для отправки обновления через десять секунд.

  5. Обратный вызов таймера должен просто очистить флаг таймера и вызвать функцию обновления.

  6. Также на мероприятии unload проверьте, установлен ли таймер, и если он был затем очищен таймером и вызывает функцию обратного вызова таймера.

Таким образом, результатом является то, что вы отправляете обновление немедленно за исключением когда пользователь хлопает, в этом случае вы только отправить обновление каждые десять секунд максимум.

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

1

Если вам нужно сохранить эти параметры с нескольких компьютеров, вам понадобится некоторая форма хранения на стороне сервера.

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

+0

Dustin Laine: спасибо, я отредактировал свой вопрос. – pt2ph8