超文本链接是World Wide Web的基础。但是如果没有404错误的话,我们所熟悉的互联网就不会有今天的规模和繁荣。Jesse Dunietz回顾了404错误的诞生历史,并且对它给出了一个充满哲学意义的极高评价:404之于万维网,就像0之于数学。无用之用,方为大用。原文发表在《大众机械》上,标题为:How the 404 Error Created the World Wide Web
404错误显然是项创新,但是如果没有它的话,你所了解和喜爱的互联网就不可能出现。
它是每个网上冲浪者的祸害,是互联网上你害怕听到的指甲刮黑板声。只要你点击任何创建日期要追溯到2005年以前的链接,单击几乎任何可追溯到2005年之前的链接,下面这行字的出现几乎是不可避免:“HTTP 404错误:页面未找到。”
只要上过网的人应该都熟悉404错误,这是Web服务器告诉你此路不通的方式。不过鲜为人知的是,WWW之所以存在正是因为这个错误。
超链接的历史
我们先来谈谈超链接。我们往往以为我们所谓的web——由大量相互链接的网页组成的集合——是互联网连接的产物。或者换句话说:首先出现了允许计算机之间交换数据的通信网络,然后在此之上我们建立了一个相互连接的迷宫,里面放满了文档和阿猫阿狗的视频等。实际上,反过来才是正确的。超文本或有课跟踪链接到其他内容的文本这种想法,比联网计算机的想法要早好几十年。
Vannevar Bush基于缩微胶片的memex信息机器的概念图,来自1945年他在《大西洋月刊》上发表的文章。
超文本至少可以追溯到1945年,当时技术先驱Vannevar Bush提出了一种超文本增强型的缩微胶卷机器,他称之为“Memex(记忆的延伸)”。Bush设想在缩微胶卷的边缘留一小块,然后按照用户的指示,memex可以在胶卷的边缘打上相关胶卷的地址代码。此后任何时候,观看同一张缩微胶片的人都可以马上拉开链接的面板。
但是Bush的想法太过超前了,直到1960年代以前,他的想法都一直只是个空想。随着数字计算机的腾飞,真正的超文本很快就变成了现实。IT传奇人物Ted Nelson借鉴了Bush的想法,构思了一个野心勃勃的超文本概念,叫做Xanadu项目,尽管直到1998年它才得以部分实现。不过,到了60年代后期, Nelson跟人一起开发了一套不太复杂的超文本系统,可支持文档内的链接。
与此同时,早期人机交互领域的佼佼者之一, Douglas Engelbart 正在研究其革命性的NLS(oNLine System)。NLS有许多突破性的功能,其中之一是该系统允许用户使用超链接在文档中跳转。所以说,早在1980年代中期的时候,超文本系统就在Nelson、Engelbart及其后继的工作中出现了。
现代网络慢慢成形
不过这些系统存在一定能够的局限性,最大的限制是它们仅限在单台计算机上有效。比方说,苹果公司的HyperCard维护了一个便签卡数据库,但是该数据库只能链接到同一设备上面的其他便签卡片。但是随着计算机网络的兴起,很自然就会扩展到从一台计算机上的文档链接到另一台计算机上的文档。即便如此,直到1989年,CERN的承包商伯纳斯·李(Tim Berners-Lee)才发明了万维网。
2009年,伯纳斯·李在一场回忆HTTP诞生的TED演讲中说:“令人沮丧的是,有太多的潜力没有释放出来。大家的磁盘有很多文档。如果设想所有这些都属于一个架设在空中的(比如互联网)的庞大的虚拟文档系统的一部分的话,那大家的日子就会好过多了。”
但是,这个想法要大范围的落地生根,还缺了点东西。这个东西就是404错误。
在伯纳斯·李之前,超文本系统通常都要确保每个链接都指向某个地方。所有新链接都要添加到一个记录文档和链接的中心数据库里面。如果链接的目标已经变更或删除的话,数据库也必须相应更新链接。
保持超链接的一致性对用户很有帮助。当所有数据都驻留在一台计算机或一个小型网络上时,这么做也不是什么难事。但是如果是在一个大型计算机网络里面,你就得需要一个中心的权威机构来注册登记所有的文档和链接。没有一个数据库能够做到实时更新全球所有的链接情况。
这个问题在好一段时间都几乎没怎么受到关注。大多数研究人员的关注焦点仍然是记录卡,帮助应用和其他小型系统上。一些项目的确允许在没有中央机构的情况下从一台机器到另一台机器的单向链接,但是这样做有个前提,那就是假定这些链接是作为团队紧密的文档创作过程的一部分予以维护的。
结果表明,解决这个问题其实有一个简单得多的办法。
“404 Not Found”的诞生
伯纳斯-李提出了验证链接的一个绝妙的简便方法:无需验证。
在World Wide Web的美丽新世界里,有关链接的信息唯一的存放之地就是包含链接的文档。如果目标文档已经移动或变更的话,那就得由链接文档进行相应更新。或者放手不管——什么都不做。
当然,这种做法意味着链接指向的地方可能不存在。这样一来,就出现了404错误。伯纳斯·李支持内容不见这种概念,他还给出了发生错误时应该返回的官方错误代码。
那么404的数字是从是哪儿来的呢?听起来好像是随便起的,但事实并非如此。伯纳斯-李的超文本传输协议(HTTP)里面有几十种状态代码。以4开头的代码针对的是用户端错误,而请求一个不存在的地址(“04”那部分)只是浏览的时候可能会搞砸的许多种方式之一。
有了伯纳斯-李的创新后,超文本文档就可以链接到自己知道地址的任何其他文档。比方说,如果您想链接到本文,你不需要获得我的许可或跟《大众机械》协调。你做就行了。如果我们在没有设置重定向的情况下下修改了URL,或者删掉了本文,你就会收到错误消息。
这种独立性是此后web欣欣向荣的关键因素之一。在几年之内,世界陷入到疯狂的网页和单向链接海洋。
当出现404错误时,网站显示自定义的页面是一种时髦。甚至连希拉里·克林顿的竞选网站也弄了个404喜剧动作片。
从某种意义上来说,404之于超文本就像而0之于数学:当然,这似乎很明显,但是把它正名化并且建立起概念却把系统的其他部分都给革命了。
尽管这种新方案非常出色,但也存在一些问题,主要就是链接无效。随着时间的流逝,页面会迁移,网站会替换自己的内容,甚至整个网站都会脱机,从而导致指向它们的链接触礁。研究发现,已发布的链接至少有50%会在五到十年内失效。不过至少一些网站做出了一些有创意的尝试,用自定义的404错误页面来款待我们。
有一些技术可以避免链接无效,比方说小心地选择链接URL,或者更大包大揽一点的做法:归档所有内容。但是对于Web而言,偶尔出现点404引发的鬼脸,不过是没完没了的新闻、知识以及猫咪模因需要付出的一点代价而已。
译者:boxi 来源:神译局