阅读是最好的习惯

Microsoft Word 为什么不做成实时保存,而要手动保存?

Microsoft Word 为什么不做成实时保存,而要手动保存?

作为一个开发Office软件的开发人员,我觉得这个是一个非常好的问题。

从研发的角度来讲,实时保存技术上有任何难度么?

答案当然是:没有任何难度!但是性能开销比较大。(大样张保存需要大量cpu计算的,这时候用户还用不用了)

Word在2019以后的版本已经支持了实时保存。(2019不支持,没人比我更了解竞品)

可能是微软的产品经理觉得大家的电脑性能足够了吧。

实时保存除了会带来性能的损耗,还会带来一个新的问题,就是,那我只想看下文档,改改,然后x掉,不保存。这样实时保存不就反倒是添麻烦了么。

微软的产品经理把这个选择交给了用户。

实时保存有一部分作用是为了避免系统崩溃导致文档丢失,这时候有个替代功能叫 – 备份!

实际上大样张备份的时候,也是相当耗费cpu的,毕竟多一次io写盘。

WPS针对保存卡顿或者备份卡顿的这个问题呢,在原有的智能备份或者定时备份上。推出了自己的解决方案

即增量备份。

什么是增量备份呢,举个例子。

原来的一个docx文档在备份的时候,会把当前文档中所有的元素重新写盘,再压缩成docx

比如我在文档中添加个文字“1”,实际上改的文档是word/document.xml文件

原来的备份是不管你改多少东西,我所有的都给你重新写盘一遍。

那么增量备份,就类似于git的增删,你只需要计算你更改的文件就行了。

那么实时备份就没有场景了么?!

答案当然是否定的,即

Web Office。

举个栗子

金山文档的文字组件

为什么同样是编辑docx,那么web端为啥做成实时保存呢,理由很简单

这就是我作为一个研发从产品的角度简单说下自己的看法吧。

因为实时保存不是零氪功能,是年卡党的付费功能。订阅365才有。

或者你用 onedrive 配合,也可以实时保存,当然这东西其实也算是付费的,毕竟付费的VIP才走国内通道能稳定访问,不付费的话 onedrive 走国外通道,自然也会间歇性抽风。

但凡提问和回答之前打开软件看一眼,这话题就不会存在,更不会头头是道的分析老半天

题外话:自动保存不如Git

虽然对于现代的文本编辑器而且,实时保存已经是个基本功能,而对于其他软件,手机应用自不必说,电脑软件也越来越多采用实时保存的设计。

但是,实时保存这功能直入寻常百姓家其实也就这十来年的事情,2010 年前后, Sublime Text 2 在国内慢慢流行起来的时候,ST2 的实时保存还被当作一个先进的特性来说。

而作为一个诞生于 80 年代的软件,Office 系列上一次大改已经是 2006 的事情了,当时的 Office 2007 带来了现在的 .docx 、.xlsx 、.pptx 等 x 结尾后缀格式,ribbon 界面也是那个时候第一次亮相。现在的 Office 2019 也好,Microsoft 365 也好,都是在 Office 2007 基础上发展起来的。

在那个机械硬盘才是主流的年代,大部分办公用户的设备都支持不了实时保存的开销——即使是 2022 的现在,我单位使用的办公电脑还是 2015 年产的 i3+2G 联想整机配置——但凡文件在个几页,保存时能都看到状态栏跑保存条。这种机能底下实时保存的体验有多差可想而知——你每打一个字,软件就会顿一下。

所以在大部分用户的设备都升级到能无感保存之前,实时保存恐怕都不会出现在 word 上面了。

有实时保存功能,需要花钱购买Office365订阅才能使用

泻药。笔者去年用PHP开发了一个网页端的编辑器,现在从技术、性能和需求上讲一下这个问题。

首先是一个事实:MS Word可以通过Office 365自动保存(同步)到OneDrive上(微软支持:什么是Word的自动保存? 微软支持:如何启用“自动保存”?),但是这是一个必须联机Office 365才能使用的功能,而Office 365是付费的。

技术上,实现自动保存非常简单,相当于Word进程自己发出一个ctrl+s信号(操作系统术语为signal),这个信号会被操作系统解析为一个保存中断,VS Code的自动保存就是这个原理。对signal感兴趣可以看CSDN:【Linux函数】Signal ()函数详细介绍

性能上,MS Word不比纯文本编辑器(例如VS Code和PyCharm),Word的Docx格式采用XML编码,和纯文本大小不在一个数量级上,隔几秒保存一次有非常大的开销,因此默认是关闭的。另外,Word有一个Cache功能,也就是自动保存某一时刻的副本,如果意外退出可以找回副本,所以频繁的自动保存会造成非常大的缓存压力

最后是需求上,Word并没有自动保存的需求,离线端大部分人都有手动按ctrl+s组合键的习惯,各种各样的编辑器(如视频编辑器Premiere-Pr、LaTeX编辑器Overleaf、MarkDown编辑器Typora)默认状态下都不设立自动保存功能,也是默认了用户已经具备自动保存的习惯。

这里提一嘴,为什么网上的大部分编辑器都是自动保存(例如搓米问答的编辑器)?首先,用户会不自主地使用ctrl+s组合键保存内容,但是浏览器的ctrl+s默认是保存整个HTML页面而非保存用户的文章,造成用户困惑。要解决这个问题,网页需要捕获用户的ctrl+s组合键行为,然后将这个行为转译为对文章的保存。

又来一个问题,网上的文本编辑器为什么自动保存的时候电脑不会变慢?因为线上自动编辑器是将内容存储到网页自己的服务器,不是用户的电脑上。服务器存储对于用户来说是一个异步操作,只要“保存”这个信号发出并且被服务器所收到,服务器会执行一个保存handler(句柄),从而保存这个文件,与用户的电脑没有任何关系。

题外话,在网上使用文章编辑应用属于SaaS(软件即服务),也就是服务器给你提供了一个可以直接用的服务。

多短的时间隔算”实时”?

完全实时的代价是什么?

退出时不想保留变化怎么办?

结合onedrive可以实现实时保存,但是很多时候其实我反而不想要实时保存。

比如,你改了一顿发现还是原版好,本地word只要选择不保存就能从新来过,实时保存的版本,回退到底可能还是无法拿到最开始的版本。

还有一些文件,最后修改日期比较敏感。对于这种文件,如果你打开的word默认实时保存,打开后没有第一时间把实时保存按钮关掉,期间还在浏览期间不小心被word判定动到了文件(诸如不小心enter了一下又回退),那恭喜你。即使过一段时间你发现了自动保存没有关闭,这时候再关,也会触发软件先保存再关闭自动保存的操作,于是这个文件上的最后编辑时间就被更新了,更新人会出现你的名字,犹如公开处刑。

另外对于比较大的文件,word开启实时保存根本无法编辑。我公司系统能把数据自动生成带表格的word,一次数据量大生成了700多页。当时的需求是要改页眉,一开始那个word放在onedrive上,默认开启自动保存,我试了好几个小时压根儿没打开。后来下载下来才勉强把这个大神请走。

如果说MS三大套件开自动保存,可能最大的受害者不是word,而是带大量公式的excel,特别是如果你不想修改,但是文件上次编辑者设置保存时自动重算的,手速不够根本挡不住。

如果对实时保存的需求非常高

很多人总是遇到没保存关闭 电脑蓝屏 死机等等情况

建议使用在线文档

最大的好处有3个

1实时保存,真的是实时,只要通网,基本不会丢你一个字,哪怕后一秒电脑爆炸

2多端同步,在线文档在电脑,手机,平板,基本上可以保持实时同步,你这边电脑写的东西,突然有事要走,拿出手机继续干也没有问题,无缝衔接

3多人协作,一个链接过去,同时多人编辑,比客户端真的好太多

Microsoft Word 为什么不做成实时保存楼上已经说的非常清楚了

这边给个建议

如果你的文档是需要深度编辑 各种酷炫的操作 可以继续使用客户端

如果你就是写个小说 轻度编辑 对于速度 以及实时保存要求更高

建议你换成协作文档

2022年了 通网的人都知道协作文档太特么好用了

因为保存是一个对原文件有破坏性的操作,所有保存都必须用户事先知情。

word其实一直都是实时保存的,但是它只保存到一个临时文件里,当word正常退出时把这个临时文件删除。

如果你的word非正常退出,可以用这个文件来恢复。如果你是正常退出,word认为是操作者自己决定不需要保存,那么实时保存的临时文件也不需要保留。

是我用的未来版word,还是你用的上古版word?

这功能早就有了啊.

配合onedrive使用还支持还原到文件的历史版本.

难不成我用的是未来科技吗…

感谢大佬同事 的科普

作为从出生起就支持实时保存Web Office,告诉大家实时保存的“代价”

换而言之,实时保存会带来性能问题

金山文档这样的Web office在用户端是可以做到无压力的,只不过这波压力来到了服务器这边

我是金山文档(?▽`???)

关注我,带你get更多办公知识~

有这个功能,但是你需要使用Microsoft 365或者Office 2021。

只要做出修改,相应的版本就能上传到云,并且支持调取历史版本。

不过这个功能必须使用OneDrive,本地文件是不行的。

我现在用的是Office 365,支持直接实时保存

题主说的不做灾时保存,是指以前老的版本吧

建议尝试一下365吧,家庭版找个车,每年50来块钱,简直不要太便宜。

这是个历史遗留问题呢亲…

原因如下:

早期 386 电脑配 1 MiB 内存跑 Word for Windows,实时保存,对 CPU 和磁盘的开销巨大,一是当时的硬件配置受不了,二是磁盘碎片让磁盘读写性能下降严重。

微软不得不做了三个折衷方案:

一是追加保存,按下 Ctrl + S 键时,会把内存中当前文档的数据全部附加到磁盘上的文档文件末尾(这只是一个最简化的模型,实际上 Word 还会在硬盘上生成临时文件,保存到临时文件)。这样可以最大限度地节省 CPU 开销,而且硬盘开销也不大,而且还引入了版本管理功能。坏处就是文档会呈几何级数增大,而且下次打开时,文档中所有数据都会加载到内存,凭空增加电脑负担。

二是自动保存,每隔一段时间,保存,时间间隔可以在「选项」中设置。这个保存是追加保存到临时文件。如果 Word 正常退出并且保存文档,Word 就会把临时文件的内容追加到原文档末尾。如果 Word 不正常退出,下次启动时就会提醒用户从临时文件中恢复。

三是重新保存(增量保存,按下 F12 快捷键另存为,Word 会将内存中的数据另存一份到硬盘上,这种保存方式,Word 会将内存中的数据与原始文档中的数据作比较,重建文档结构,去除冗余,所以这种保存方式最慢,但是文档体积最小。

这三个方案,从大约 1991 年一直沿用到 2006 年,从 Word 2007 引入基于 xml 格式的 docx 文档格式开始,Word 放弃了古老的追加保存。

但是微软为什么没给 Word 2007 引入实时保存呢?这就是市场因素了。

一是 2006 年的微软 Word 开发团队可能根本没想到用户还有实时保存的需求,也可能他们认为实时保存优先级不高,应该放到下个版本。

二是 Word 2007 的上市伴随着一次巨大的重构,有些功能没来得及做,就匆忙上市。

三是微软刻意推广 OneDrive 云,人为迫使用户必须连接到 OneDrive 云,才能使用自动保存功能。

总之,借助 OneDrive,Word 总算可以实时保存了(还可以做版本管理了)。没有更好的原生方案,我们只好先用着呗……

赞(0) 打赏
未经允许不得转载:微精选 » Microsoft Word 为什么不做成实时保存,而要手动保存?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏