Мгновенное сохранение данных, закрыть, сохранить кнопку? Что лучше в этой ситуации - PullRequest
1 голос
/ 21 июня 2011

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

Но теперь я добавил серию флажков, которые пользователь может установить и снять:

enter image description here

Правильно ли было бы мгновенно сохранять все в базу данных каждый раз пользователь ставит / снимает флажок?Я думаю только об уменьшении количества обращений моего веб-приложения на сервер для сохранения данных.Facebook, Google (и многие другие) используют кнопку «Сохранить» всякий раз, когда пользователь вносит изменения в большое количество полей (скажем, в свою информацию о пользователе).

Я пытаюсь избежатькнопка «Сохранить», и поэтому пришла в голову мысль сохранить эти значения всякий раз, когда пользователь закрывал или обновлял страницу.Я тоже не знаю, правильно ли это (что если происходит потеря питания, и их система отключается!), Но я знаю, что могу использовать это так:

public void onClose(CloseEvent<Window> event) {
    //save changes to the datastore
}

Яразрываясь между тремя методами и не знаю, какой путь выбрать!Любая информация будет полезна

Спасибо!

1 Ответ

1 голос
/ 21 июня 2011

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

Тем не менее, если вы хотите уменьшить количество циклов и загрузку сервера, вы можете сделать несколько вещей: вы можете ограничить количество выполняемых операций сохранения одним, так что если пользователь делает Если вы ожидаете завершения запроса на сохранение, вы ждете, пока этот запрос завершится, прежде чем отправлять новый. Или вы можете запустить таймер, когда пользователь вносит изменения, и фиксировать любые изменения, когда истекает таймер - это почти то же самое, что работает автосохранение черновиков сообщений в GMail.

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

...