立即保存数据,onClose,保存按钮?在这种情况下哪个更好

时间:2011-06-20 20:19:04

标签: google-app-engine gwt google-cloud-datastore

在我的GWT应用程序中,我一直在保存用户在进行更改时立即在后台进行数据存储的所有操作。到目前为止,这很好,因为用户可以改变的事情并没有被彻底改变。

但是现在我添加了一系列用户可以检查的复选框。取消:

enter image description here

将所有内容立即保存到数据库每次用户检查/取消选中一个框是否合适?我想到的是减少我的Web应用程序去服务器保存数据的次数。每当用户对大量字段(例如,他们的用户信息)进行更改时,Facebook,Google(以及许多其他人)都会使用“保存”按钮。

我试图远离“保存”按钮,因此无论何时用户关闭或刷新页面,都会想到保存这些值。我不知道这是否合适(如果断电,他们的系统会关闭!),但我知道我可以这样使用它:

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

我在三种方法之间徘徊,不知道要走哪条路!任何信息都会有所帮助

谢谢!

1 个答案:

答案 0 :(得分:1)

您当前的系统遵循一个非常优秀的设计模式,许多应用程序(网络和其他)最近都在采用:消除“保存”的手动操作。我认为你应该坚持下去。

也就是说,如果你想减少往返次数和服务器负载,你可以做一些事情:你可以将正在保存的数量限制为一个,这样如果用户做了一个在等待“保存”请求完成时进行更改,等到该请求完成后再发送新请求。或者,您可以在用户进行更改时启动计时器,并在计时器到期时提交任何更改 - 这几乎是GMail自动保存草稿消息的方式。

无论哪种方式,依赖关闭事件来触发向服务器发送状态:如果用户的浏览器崩溃,则关闭事件将不会触发,并且它们将丢失所有更改