跳转到正文

SetFN 为什么这么快

使用 SetFN 时,无需刷新文件就会立即显示,团队成员的位置也会实时呈现。 本文介绍实现这一点的 WebSocket 通信与内网传输的区别。


通信方式的差异

Q:普通 Web 服务与 SetFN 的通信方式有什么不同?

在 HTTP 轮询方式中,客户端定期向服务器发送“有没有变更?”的请求,然后等待响应。

SetFN 使用 WebSocket 方式。服务器与客户端建立一次连接后,保持该连接并双向收发数据。

项目HTTP 轮询SetFN(WebSocket)
连接每次请求时连接连接一次后保持
变更传递延迟到下一次轮询发生变更后立即传递
服务器负载高(重复请求)低(仅在变更时传输)

Q:打个比方,有什么区别?

HTTP 轮询就像短信。需要自己去确认有没有新消息。

用户: "有新文件吗?" (请求)
服务器: "还没有。" (响应)
[片刻后]
用户: "现在呢?" (再次请求)
服务器: "上传了一个。" (响应)

SetFN 的方式就像打电话。连接始终保持,一有变更就会立即告知。

[连接保持中]
团队成员上传文件 -> 立即显示在我的屏幕上
团队成员重命名文件 -> 立即反映到我的屏幕上
团队成员移动到其他文件夹 -> 聊天参与者列表中的位置立即更新

本地网络的优势

Q:为什么在内网中使用会更快?

因为不经过互联网,而是在同一网络内直接通信。 云服务的数据必须往返外部服务器,而 SetFN 的数据只在同一栋建筑内流动。

云服务: 我的 PC -> 互联网 -> 外部服务器 -> 互联网 -> 同事的 PC
SetFN:   我的 PC -> 内网 -> 同事的 PC

Q:大文件传输也很快吗?

由于直接利用内网速度,大文件传输的差异更加明显。

10GB 文件传输时间:
- 1Gbps 内网 (SetFN): 约 80 秒
- 100Mbps 互联网 (云服务): 约 13 分钟

在实际工作中的效果

Q:实时同步对工作有什么帮助?

文件上传、撰写评论、重命名等所有变更都会立即反映到团队成员的屏幕上。 不需要按刷新,也不需要另外通知“文件已上传,去看一下”。

Q:如何防止编辑冲突?

一个人编辑文件期间会启用编辑锁定,其他用户无法编辑同一文件。 通过锁定标识可以确认谁正在编辑,从而避免同时修改同一文件导致一方的工作成果丢失。

传统方式:
  金哲秀: 编辑文件 -> 保存
  李英姬: 编辑同一文件 -> 保存
  结果: 发生冲突,一方的工作丢失

SetFN:
  金哲秀: 开始编辑文件 (编辑锁定)
  李英姬: 看到金哲秀的编辑锁定标识
  李英姬: 先处理其他文件
  结果: 没有冲突

相关文档