文章
什么是客户端处理?
大多数文件工具的工作方式是将文档发送到远程计算机,由其完成繁重处理后再返回结果。客户端处理颠覆了这一模式:由你自己的浏览器完成工作,文件永远不会离开你的设备。
工具工作的两种方式:你的机器,还是他们的机器
服务器端处理中,上传文件有点像送去寄存干洗:你交出去,远程机器处理,稍后取回结果。客户端处理更像在家自己洗衣服。工具在你的浏览器标签页内运行,从内存中读取文件、进行处理,然后将输出交还给你,整个过程文件都不会接触任何网络连接。网站只需交付一次处理代码,之后一切都在你这边运行。
WebAssembly 为浏览器带来了什么
很长一段时间里,浏览器只能运行 JavaScript,它虽然适合构建界面,但对于重新编码视频或对大型图像应用压缩等任务来说太慢了。WebAssembly(通常缩写为 WASM)改变了这一切。它是一种紧凑的二进制格式,浏览器可以以接近原生的速度执行,因此用 C 或 C++ 编写的代码可以编译为 WASM 并在浏览器标签页内运行,无需任何插件。驱动桌面软件的相同编解码器和压缩库如今可以直接在页面中运行。JavaScript 和 WebAssembly 协同工作:JavaScript 负责界面和调度,WASM 负责高强度计算。
处理任务期间实际发生了什么
当你将文件拖放到客户端工具上时,页面会加载一个小型处理引擎(通常是 WASM 模块,如果尚未加载的话),然后通过 JavaScript 将文件传递给它。实际处理通常在名为 Web Worker 的后台线程上运行,这样在处理进行时浏览器界面依然保持响应。在此过程中你随时可以打开浏览器的网络标签页,不会出现携带你文件的请求。输出在内存中组装完成后,以下载形式提供给你。
你应该了解的真实权衡
第一次使用依赖大型 WASM 引擎的工具时,浏览器会下载并缓存该引擎。之后再使用时跳过下载,可完全离线运行。由于处理在你的设备上执行,超大文件所需的时间取决于你的 CPU 和可用内存,一些繁重任务数据中心可能会完成得更快。但你换来的是真实的价值:文件永不传输、在慢速连接下无需等待上传,而且第一次加载后工具在没有网络的情况下也能继续工作。
本文涉及的工具
常见问题
客户端处理是否自动意味着我的数据是私密的?
客户端意味着文件在设计上不会被发送到服务器,这正是隐私保护得以实现的原因。你可以自行确认:在处理文件时打开浏览器开发者工具的网络标签页,不应出现携带你文件数据的外发请求。尽管如此,核实工具是否真正如此运作,而不是仅仅信任标签声明,仍然是明智之举。
为什么工具第一次使用有时会比较慢?
浏览器需要在首次使用时下载处理引擎(WASM 模块),这可能需要几秒钟,具体取决于其大小和你的网络连接。之后引擎会缓存到本地,后续会话立即启动,工具也能在离线状态下正常工作。