Лучший способ сохранить статус динамического веб-интерфейса - PullRequest
0 голосов
/ 22 октября 2010

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

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

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

Ответы [ 2 ]

1 голос
/ 03 ноября 2010
  1. Вызывать (измененную) функцию (на стороне клиента) каждый раз, когда изменяется ящик.

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

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

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

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

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

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

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

1 голос
/ 22 октября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...