很多用户问我们:"为什么你们的连接这么快?其他家要等几十秒,你们几秒就搞定?"说实话,这个"快"是我们花了2年时间、踩了无数坑才做到的。今天把踩过的坑分享出来,让你们知道这0.8秒背后发生了什么。
一、为什么早期版本要等45秒?
快连第一个版本做出来的时候,连接时间平均要45秒。用户反馈"点下去就去泡茶了"。我们当时觉得很委屈,明明技术没问题,怎么就是快不起来?
后来分析才发现,45秒里只有5秒是真正的连接,其他40秒都在干嘛呢?DNS解析、CA证书验证、TLS握手、密钥交换……每一个环节都有延迟,加起来就变成了45秒。
二、第一个突破:从45秒到15秒
我们第一个想到的办法是"预热":在用户不用的时候,后台默默建立连接。用户要点的时候直接用。我们加了预热逻辑,连接时间从45秒降到了15秒。
但用户还是觉得慢。而且预热会消耗电量,移动端用户开始投诉"开VPN掉电太快"。
三、第二个突破:从15秒到3秒
后来我们改了策略:不用预热,而是优化握手流程。传统的TLS握手要2-3个RTT,我们改成了1-RTT握手,证书验证也做了缓存。
这个改动让连接时间从15秒降到了3秒。但还是有用户觉得3秒太长。
四、决定性的突破:从3秒到0.8秒
真正的突破是我们发现了"热连接复用"的机制。不是每次连接都从头开始握手,而是复用之前的连接状态。配合预选的节点和智能路由,连接时间降到了0.8秒。
这个0.8秒里:DNS解析是并发的、CA验证是并发的、TLS握手是复用的。每一个环节都在抢时间。
- v1.0:纯直连,平均45秒
- v1.5:加预热,平均15秒(但耗电)
- v2.0:优化握手流程,平均3秒
- v2.5:热连接复用+智能预选,0.8秒
五、现在的"秒连"是怎么工作的?
当你的快连打开的那一刻,它会同时做这几件事:1)读取上次保存的连接状态;2)并发发送DNS解析请求;3)根据历史数据预判你要连的节点。
等你点击连接的时候,其实连接已经建好了90%。剩下的10%只需要0.8秒就能完成。这就是为什么我们的用户说"点下去就能用"。
如果你感兴趣,可以在设置→诊断里打开"连接日志"。每次连接的每个环节耗时都会被记录下来。我们内部做优化的时候,就是靠这些数据一点点把时间压下来的。