【问题标题】:Saving data instantly, onClose, save button? Which is better in this situation立即保存数据,onClose,保存按钮?在这种情况下哪个更好
【发布时间】:2011-06-20 20:19:03
【问题描述】:

在我的 GWT 应用程序中,每当用户进行更改时,我都会将用户立即执行的所有操作保存到后台的数据存储中。到目前为止,这一切都很好,因为用户可以更改的内容并没有发生太大变化。

但现在我添加了一系列用户可以选中和取消选中的复选框:

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

我试图避免使用“保存”按钮,因此我想到了在用户关闭或刷新页面时保存这些值。我也不知道这是否合适(如果断电,他们的系统关闭了怎么办!),但我知道我可以这样使用它:

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

我在三种方法之间左右为难,不知道该走哪条路!任何信息都会有所帮助

谢谢!

【问题讨论】:

  • 您是否能够为您的应用程序使用 HTML5 功能或 Gears?一个不错的选择是本地保存更改,然后定期同步到您的服务器,这将避免不断发布问题并打开离线工作的可能性——不过完全取决于您的应用程序。
  • 我可以在客户端进行更改而不同步任何内容,并且应用程序将运行良好,直到用户退出并再次打开它(他们之前的更改不会被保存)。我不认为我需要定期同步任何内容或在本地保存更改,但我现在很好奇这在 GWT 中是否可行。
  • 编辑并包含了用于此帖子的图像。 (当时我没有达到 10 次代表的要求!)

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


【解决方案1】:

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

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

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

【讨论】:

  • 我非常喜欢计时器的想法,我现在晚上有一些漂亮的工作要做!如果我不依赖关闭事件,这是否意味着根本不应该使用它?如果我要使用计时器,并且用户快速进行更改并退出浏览器,我认为如果计时器没有用完,更改仍然不会被保存。一旦我知道更多信息,我会在明天早上讨论它并回到这个问题。谢谢!
  • @trev 挂钩关闭事件当然不会有什么坏处,不。当某些浏览器注意到对表单的修改时,您也可以利用它们的“您确定要离开吗”对话框,尽管我不确定它们如何确定何时触发该对话框。
  • 接受您的回答。我也不确定他们是如何做到的,但这是以后的另一个问题。再次感谢您
猜你喜欢
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2016-12-24
  • 1970-01-01
相关资源
最近更新 更多