我眼中的网站发展简史

即便是简史,也能专门开一门课。大部分内容网上都能搜到,比如搜索 “The history of web(site)”,能搜到的东西我就不太愿意讲,这里只从两个对比角度说一说我眼中的网站发展史。

静止的 vs. 运动的

最初的所有网站都是静止的,它们完全由 HTML 构成,可相互添加为超级链接,这最核心的一点至今未变。HTML 负责表述内容和结构,浏览器读懂后将内容呈现给上网的人,比如世界上第一个网站,如今看起来是极为简陋的,因为它完全由 HTML 构成,所以只有内容和结构,即便如此,我们此时此刻仍然可以正常访问它、阅读它、探索它,一个一个超级链接点击过去,犹如一只巨网,它们相互链接着,使你我深陷其中。后来有了 CSS,它负责呈现样式,就像人们化妆、穿衣,既展现了自己的个性,也让直接接触者觉得更舒服。可以这么说,21世纪之前,几乎所有的网站都是静止的,由表述结构的 HTML 和呈现样式的 CSS 构成,网页加载完毕后,只要我们不刷新网页、不点击任何超级链接,电脑上的浏览器和大洋彼岸那头的服务器就绝不会主动对话。比如,我的博客就是静止的。

不久之后,JavaScript 被发明出来,网站的发展历程得以巨变。可以说 JavaScript 的诞生成就了网站的发展,也可以说网站的发展成就了 JavaScript 的不死之身,这两种说法一点也不矛盾。这其中有一段以浏览器为主角的世界大战,技术水平和商业运作也在此期间迅速发展,我们直接说结果,结果就是鹬蚌相争,JavaScript 得利。JavaScript 的地位与 HTML 和 CSS 齐平,它专门负责逻辑运算,也由此开始,做网站和编程这件事沾上边了。现在几乎所有的网站都是由表述结构的 HTML 和呈现样式的 CSS 以及负责逻辑运算的 JavaScript 这网页三剑客构成。

JavaScript 在浏览器上的普及,允许做网站的人天马行空,丰富的交互方式被应用于网站开发。以 AJAX 技术为分水岭,应用级网站陆续雨后春笋,网页开始运动起来。这里的运动指数据的流动,前文提到过,只要我们不刷新网页,静止的页面是永远不会自发改变的,而运动的网页会自主从远程服务器那里把数据拉回来。比如QQ邮箱提示我们有未读邮件,即便我们不做任何操作,它也会间隔性地获取数据。

用 Meteor 制作的网站则更进一步,它有能力在本地浏览器与远程服务器之间建立一个允许双向、实时沟通的管道,数据可在这一管道中往复运动。正是这一点,让 Meteor 在 2012 年的最初公开期间获得大量关注,人人称奇。探究进去就会发现这里面不存在任何魔法,它只不过是应用了 WebSocket 协议,正是这一协议允许创建可长时间保持连接状态的数据管道。除此之外,Meteor 在本地浏览器建立了一个迷你数据库,允许网站存储、调用数据,方便在实时沟通中进行数据对比,随时添加、修改、删除迷你数据库中的条目。正是这两点,赋予网站活力,实现了真正意义上的运动的网站。Meteor 的神奇之处在于释放开发者的脑力,即便你我不懂其中的原理,也能在短时间内实现这种原本需要一整个资深开发团队才能打造出来的应用级网站。

看得见的 vs. 看不见的

我们电脑上的浏览器能且只能理解 HTML, CSS, JavaScript 这三种语言并渲染出可供我们阅读和使用的网站,这部分属于我们看得见的。受限于此,技术开始向我们看不见的方向发展。

既然浏览器那么挑剔那么弱,那么我们可以充分利用服务器,让服务器充当翻译者,这样我们就可以使用各种先进的语言来编写网站了,比如 PHP, Java, Python, Ruby 这些编程语言。最初的绝大多数企业级、应用级的网站都是用它们编写的,现今尚是如此。此时服务器的工作重心便是翻译了,数据库中的数据随时会发生变化,访问者的每次获取都是先翻译再传输,以此保证浏览器能够正常渲染,问题出现了,千万次的访问意味着千万次的翻译,服务器表示压力山大。为了缓解压力,中间往往会加入一个缓存层,这个缓存层说白了就是一个临时的静止的网站,它只被翻译一次,就可供千万访问者获取,每隔一段时间再翻译一次,完成对静止的网站的更新,虽然牺牲了数据的时效性,但它实现了用最小成本服务最广大访问者的目的。

随后,用 JavaScript 编写而成的 Node.js 加入进来,一开始的卖点是编写一个先进的网站只需要使用一种语言,思维上不需要反复转变了,没错,脑力解放了一些。更重要的是,一个新机遇出现了——理论上讲运行 Node.js 的服务器不再需要进行翻译了——实际应用起来也确实如此。Meteor 充分利用了这一点,不管是看得见的还是看不见的,HTML, CSS, JavaScript 三剑客都能搞定。个人计算机和手机的处理能力越来越强,浏览器有足够的算力来渲染复杂的网页,由此服务器的工作中心便转向处理和传输数据。这一转变不仅缓解了服务器的压力,而且提升了浏览器的地位,在我看来,浏览器和服务器已经是一回事了,只不过从安全层面上看,服务器永远是且仅是唯一可信的。

一句话总结,我眼中的网站发展史是一个逐步赋予生命的融合过程,而 Meteor 旨在帮助我们编写出应运时代潮流的网站。