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:
金哲秀: 开始编辑文件 (编辑锁定)
李英姬: 看到金哲秀的编辑锁定标识
李英姬: 先处理其他文件
结果: 没有冲突