7月中旬的时候,我发现自己又在盯着投影仪屏幕,看着维基百科的网页到底能不能打开了。运气好的话,请求发出15-20秒之后,页面应该就开始渲染了,如果运气不好,浏览器连接没有超时的话,可能要等将近一分钟,于是几天下来的课堂上,满眼都是“服务器停止响应”。
不止是维基百科,CNN国际加载时间也差不多,Googe主页也好不到哪去。即便是现在这个站点,还得要十来秒钟来加载最小内容后,才开始页面渲染,一般情况下耗时只会更长。
今年我在乌干达的一个乡村,为一个职校班级的学生讲解Web开发。他们拥有一个堆满运行着Windows的Dell桌面、一排Ubuntu的树莓派等各种电脑的计算机实验室,但是却只能通过地球同步卫星来上网,于是只能干等着,等吧,等吧。
我想解释一下原因—更重要的是,他们到底是怎么以舒适和安全的名义,把上网体验搞得越来越差的。
首先,考虑一下卫星上网的条件限制,如果你对这个世界很了解,跳过若干章节吧,否则请听我简单说一下挑战在哪里。
对于卫星上网,光速是ping包耗时的一个影响因素:信号仅仅是通过真空和大气层的混合空间进行传播,就可以在约89,000英里(大约一万五千多公里)的区域内耗费掉大约半秒钟的传输时间,如果一路都是真空,ping延迟的最低值差不多是506毫秒。
这只是信号到地球同步轨道的往返时间,实际上,有时候在任一端路由数据包,在卫星重新传输还要耗时间。
但在大多数情况下,丢包还不是最致命的,毕竟这些数据包将进入轨道并返回。数据包一路传输的环节太多,许多因素都可能导致数据包丢失。丢包率达到50%是正常事,80%都不稀奇。
因此,你会丢掉一半甚至更多的数据包,而对于侥幸没丢掉的那些数据包,每个包的延迟时间约为三分之二秒。
这就有足够的理由来建一个本地的缓存服务器了,更重要的是几乎所有的商业卫星连接都带有数据流量上限,像我所在的那个地方上限就是50GB /月。 除此之外,还得支付超额费用,或者等到下个月才能获得数据流量。因此,如果能在本地缓存一下URL,只在第一次上网时计费,那么就可以玩一把缓存,在我教学的那所学校里就有人是这么干的。
当时我就在那里傻站着,只是眼睁睁地指望网页能够打开,可以继续给一群职业学生上点基础课程。 因为维基百科没法缓存,谷歌没法缓存,Meyerweb也没法缓存,几乎没啥能缓存的。
为啥?HTTPS。
在本地建的缓存服务器,是用来加速访问一些常用的网站,减少对带宽的使用,是一个“中间人”。 而HTTPS设计思路是为了防止中间人攻击,结果让本地缓存服务器彻底没法玩了,所以我一直在干等着远程资源,每次请求都吃掉了那个月的数据上限。
互联网转型HTTPS的这个趋势,已经使下一波十亿用户对其敬而远之 - 更不用说前五亿用户了。 我看到有人声称“投资HTTPS,让网络更快更便宜,更容易为网民服务”,如果你把网民都当成是有千兆光纤接入的人,那么你牛。也许对于大多数最后一英里是铜质网线的人来说是没错, 但对于玻璃和电线都够不着的人来说纯属扯淡。
如果你颇感意外,那绝不止你一个人。 我没有听到任何关于它的消息,所以我问过一些同事是否知道这个问题, 他们不仅没有,反应跟我差不多:这不应该是一个现实问题,或者:我们已经听说过了! 但不是。
我们能做点什么吗? 对于刚开始用浏览器的用户,据我所知,可以用Service Workers作为“中间人“来规避HTTPS的问题。 因此如果通过是HTTPS提供内容,那么创建Service Workers应该是当前的首要任务之一,即使它只是为了直接进行本地缓存。 我还没有为meyerweb做过一次Service Workers,但我很快就会这样做。
这对于比较新的浏览器来说非常棒,但不是每个人都可以选择新的版本。 有时他们受到还在用的底层老操作系统的限制,还得运行旧版的浏览器,不支持Service Workers。例如,一个只能用装了IE8的Windows XP电脑的实验室,或者甚至在旧电脑上运行Windows 95或其它老的操作系统。 那些人最有可能是那些只能用卫星上网,或其他类似的慢速上网服务的人,用起来还有一点没得商量余地的数据上限。 即使在高速上网的环境里,仍然还有在使用一些较旧的操作系统和浏览器的,例如某些公共图书馆。 HTTPS是加强网络安全意识了,结果却弄得全世界许多人上不了网。
除了建议部署个Service Workers,让那些眼巴巴等着上网的人能满足一下,我也没有别的法子了。 我认为HTTPS总体来说可能是好事,也不知道还能有什么更好的。 我唯一能知道就是,自己正在眼睁睁得看着那些逐渐远离我们的数据中心和思想的人,正在变得负面了、疏远了。
译者介绍:
张文剑,南京机敏科技首席架构师,主攻OpenStack VDI,参与编写中国开源云联盟桌面云标准,主持机敏云平台1.0、2.0版本的研发。