我已经看过Medium.com以及Google Drive docs / sheets / etc。所有都使用草稿内容保存,因此您的编辑不会丢失。谷歌的版本用于内容版本控制,但这只是一个额外的副作用,因为他们显然没有更新相同的内容,而是保存所有内容以获取内容历史记录。
我对这两种内部工作的方式感兴趣。
如果您观察到在客户端和服务器之间交换Ajax调用,可以看到它们都发送某种部分内容或用户操作保存。这种草稿保存非常快,因为即使是冗长的内容也可以利用微小的请求使草稿保存成为一个快速的过程。问题当然是因为这些部分保存现在是有状态的,因此它们严重依赖于现有的内容状态。
我还在开发一个网络应用程序,可以从这种小而快速的保存功能中受益,但我不想重新发明轮子并跳过所有障碍。我不确定我是否应该
记录击键并立即发送,然后必须在服务器上重播以在那里实际生成匹配的内容状态。
它应该以任何其他方式工作,例如记录击键并以预定义的间隔发送它们吗?
根本不记录击键,而是以某种方式计算内容差异。内容差异是在像GitHub这样的CVS中完成的,我想这个算法现在已经很好地定义了,并且正确地显示了删除和添加的内容。如果这个过程对于客户端处理来说不是太复杂,我可能会沿着这条路走下去发送小差异
这些只是我头脑中的三种方式(虽然前两种性质相似)但可能还有其他一些我没有想过的方法。
我相信你们中的一些人之前可能已经完成了这项工作,并且拥有一些经验以及不同技术的优点和缺点,如果有现成的开源库可以帮助简化这一过程而不做这一切都是从头开始。
应如何做?