2

我需要在文本编辑器 Web 应用程序中实现自动保存功能,以在用户键入时管理自动保存。我没有关于这种技术的具体知识,所以我想知道它是如何在现代基于 Web 的文本编辑器中处理的,特别是在触发保存功能时:

  • 它是由键盘事件本身触发的,还是由检查先前键盘事件的定期扫描(例如每 5 秒)触发的?
  • 是否必须在用户不打字时触发(例如在 3 秒不活动后)以减少网络流量?

有什么建议么?

谢谢

4

3 回答 3

5

例如,这里描述了 Wordpress 中的自动保存。我的观点是,这取决于应用程序的类型。我想,找到最佳解决方案的最佳方式是您希望在访问某个站点时查看的方式。

所以,如果你把“保存”按钮放在某个地方,那么我认为你真的不需要每隔几秒触发一次,而是每隔几分钟触发一次(就像 Wordpress 一样)。

由于您将通过客户端语言(可能是 JavaScript)侦听事件,因此您无需过多担心性能 - 如果您愿意,只需每 10 秒侦听一次,并检查是否满足自动保存的要求。如果是的话,你可以用一些 AJAX 魔法将它保存在某个数据库中。

如果我是您(或者,如果我是您网站的用户),我想开始在第一个 keyUp 上收听事件。然后,当我输入第一个字母时,JS 将通过 AJAX 每 1 分钟或每输入 500-1000 个字符存储在 DB 中,无论第一次遇到什么。我想最好考虑到有人打字更快,有人打字慢。这就是为什么我会检查输入的字符数和时间。

这是我的意见。(最终对语法感到抱歉,免费编辑:D)

编辑:另外,如果网站是您的,并且您期望一些大流量和大量用户,您可以动态查看系统如何工作并相应地设置您的变量(更长/更短的时间/字符)

于 2013-03-25T14:23:05.540 回答
1

我认为没有“正确答案”。这取决于您期望您的应用程序如何工作。

如果要保持服务器上的数据始终与前端的文本相对应,则应将保存功能绑定到键盘事件。但是,这显然是低效的,占用带宽的,并且在正常情况下是不必要的。

如果数据一致性对您来说不是那么重要,那么在固定时间段后检查文本并保存(如果文本已更新)是一种正确的方法。

于 2013-03-25T14:22:23.730 回答
1

我正在为博客网站开发类似的工具。事实证明,它需要更多的计算储蓄点,而不仅仅是:

  • 每 x 秒
  • 在 x 秒不活动后

除了上面我还补充了:

  • 当点击出文本框时
  • 在关闭页面之前
  • 跟踪保存操作并确保它们不会冲突或保存太多次
  • 没有在文本框中输入时停用自动保存

在我们的例子中,它是一个 Web 应用程序,我使用了 javascript,确保它快速可靠是至关重要的。

您可以在http://www.omidmufeed.com/autosaving-text-editor-with-javascript/找到我的解决方案

我希望这可以帮助别人。

于 2014-11-09T18:41:40.660 回答