沒有“404”錯誤,就沒有今天的萬維網

編者按:超文本連結是World Wide Web的基礎。但是如果沒有404錯誤的話,我們所熟悉的互聯網就不會有今天的規模和繁榮。Jesse Dunietz回顧了404錯誤的誕生歷史,並且對它給出了一個充滿哲學意義的極高評價:404之於萬維網,就像0之於數學。無用之用,方為大用。原文發表在《大眾機械》上,標題為:How the 404 Error Created the World Wide Web

沒有“404”錯誤,就沒有今天的萬維網
沒有“404”錯誤,就沒有今天的萬維網

404錯誤顯然是項創新,但是如果沒有它的話,你所瞭解和喜愛的互聯網就不可能出現。

它是每個網上衝浪者的禍害,是互聯網上你害怕聽到的指甲刮黑板聲。只要你點擊任何創建日期要追溯到2005年以前的連結,單擊幾乎任何可追溯到2005年之前的連結,下面這行字的出現幾乎是不可避免:“HTTP 404錯誤:頁面未找到。”

只要上過網的人應該都熟悉404 錯誤,這是Web服務器告訴你此路不通的方式。不過鮮為人知的是,WWW之所以存在正是因為這個錯誤。

超連結的歷史

我們先來談談超連結。我們往往以為我們所謂的web——由大量相互連結的網頁組成的集合——是互聯網連接的產物。或者換句話說:首先出現了允許計算機之間交換數據的通信網絡,然後在此之上我們建立了一個相互連接的迷宮,裡面放滿了文檔和阿貓阿狗的視頻等。實際上,反過來才是正確的。超文本或有課跟蹤連結到其他內容的文本這種想法,比聯網計算機的想法要早好幾十年。

沒有“404”錯誤,就沒有今天的萬維網
沒有“404”錯誤,就沒有今天的萬維網

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”那部分)只是瀏覽的時候可能會搞砸的許多種方式之一。

從某種意義上來說,404之於超文本就像而0之於數學:當然,這似乎很明顯,但是把它正式化並且建立起概念卻把系統的其他部分都給革命了。

有了伯納斯-李的創新後,超文本文檔就可以連結到自己知道地址的任何其他文檔。比方說,如果您想連結到本文,你不需要獲得我的許可或跟《大眾機械》協調。你做就行了。如果我們在沒有設置重定向的情況下下修改了URL,或者刪掉了本文,你就會收到錯誤消息。

這種獨立性是此後web欣欣向榮的關鍵因素之一。在幾年之內,世界陷入到瘋狂的網頁和單向連結海洋。

當出現404錯誤時,網站顯示自定義的頁面是一種時髦。甚至連希拉莉·克林頓的競選網站也弄了個404喜劇動作片。

從某種意義上來說,404之於超文本就像而0之於數學:當然,這似乎很明顯,但是把它正名化並且建立起概念卻把系統的其他部分都給革命了。

儘管這種新方案非常出色,但也存在一些問題,主要就是連結無效。隨著時間的流逝,頁面會遷移,網站會替換自己的內容,甚至整個網站都會離線,從而導致指向它們的連結觸礁。研究發現,已發佈的連結至少有50%會在五到十年內失效。不過至少一些網站做出了一些有創意的嘗試,用自定義的404錯誤頁面來款待我們。

有一些技術可以避免連結無效,比方說小心地選擇連結URL,或者更大包大攬一點的做法:歸檔所有內容。但是對於Web而言,偶爾出現點404引發的鬼臉,不過是沒完沒了的新聞、知識以及貓咪模因需要付出的一點代價而已。

本文經授權發布,不代表36氪立場。

如若轉載請註明出處。來源出處:36氪