酷URI不变

由URI,URL,HTTP,HTML和万维网的发明者Tim Berners-Lee爵士撰写,他是W3C的现任负责人。写在1998年



什么URI很酷?

一个不变的。

URI如何更改?

URI不会改变:人们会对其进行更改。



从理论上讲,人们没有理由更改URI(或停止维护文档),但实际上有数百万人。



从理论上讲,域名称空间的名义所有者实际上拥有域名称空间,因此也拥有其中的所有URI。除了破产之外,没有什么可以阻止域名所有者保留此名称的。从理论上讲,域名下的URI空间完全在您的控制之下,因此您可以使其稳定。文件从互联网上消失的唯一很好的理由是拥有域名的公司已经倒闭或无法负担得起保持服务器运行的费用。那么,为什么世界上有那么多的缺失环节?部分原因是缺乏远见。以下是一些您可以听到的原因:



我们只是重组了站点以使其更好。



您真的感觉旧的URI不再可用了吗?如果是这样,则您选择它们​​的能力很差。考虑从下一次重新设计中保留新的。



我们的材料太多了,无法跟踪过时的内容,机密的内容以及仍然相关的内容,因此我们认为最好将其关闭。



我只能同情。W3C经历了一段时期,在将其公开之前,我们必须仔细筛选存档材料以确保机密性。必须事先考虑决定-确保您在每个文档中记录可接受的读者范围,创建日期以及理想的截止日期。保存此元数据。



好吧,我们发现我们需要移动文件...



这是最可悲的借口之一。许多人不知道Web服务器允许您控制对象的URI与它在文件系统中的实际位置之间的关系。可以将URI空间视为完美组织的抽象空间。然后映射到您实际用于实现它的任何现实。然后将其报告给Web服务器。您甚至可以编写服务器片段以使其正确使用。



John现在不再维护此文件,Jane现在维护了。



约翰的名字在URI中吗?不,只是文件在他的目录中?哦,那好吧。



我们曾经为此使用CGI脚本,但是现在我们使用一个二进制程序。



一个疯狂的想法是,脚本页面应位于“ cgibin”或“ cgi”区域。这揭示了如何启动Web服务器的机制。更改机制(甚至保留内容)并oops-所有URI都会更改。



以美国国家科学基金会(NSF)为例:NSF



在线文档

http://www.nsf.gov/cgi-bin/pubsys/browser/odbrowse.pl


开始查看文档的第一页显然将在几年后保持不变。cgi-binoldbrowse以及pl -所有这些都提供了有关我们如何做的信息。如果使用页面搜索文档,则首先会得到同样糟糕的结果:



密码学和编码理论工作组的报告

http://www.nsf.gov/cgi-bin/getpub?nsf9814


用于文档的索引页,尽管html文档本身看起来要好得多:



http://www.nsf.gov/pubs/1998/nsf9814/nsf9814.htm


这里的标题pubs / 1998将为以后的任何存档服务提供一个很好的线索,表明旧的1998文档分类方案已经生效。尽管文档编号在2098年看起来可能有所不同,但我可以想象到该URI仍然有效,并且不会干扰NSF或以任何方式维护档案的任何其他组织。



我不认为URL应该是持久的-它们是URN。



这可能是URN讨论中最严重的副作用之一。有人认为,由于对更持久的名称空间的研究,他们可能对悬挂的链接不太在意,因为“ URN可以解决所有问题”。如果您是这些人之一,那么让我们感到失望。



我见过的大多数URN方案看起来都像是一个授权标识符,后跟您选择的日期和字符串,或者只是您选择的字符串。这与HTTP URI非常相似。换句话说,如果您认为您的组织将能够创建长期存在的URN,那么现在就通过将其用于HTTP URI进行证明。HTTP本身没有使您的URI不稳定的因素。只有您的组织。创建一个数据库,该数据库将文档的URN映射到当前文件名,并让Web服务器使用它来实际检索文件。



如果您到了这一步,那么如果您没有时间,金钱和连接来开发某种软件,则可以说明以下借口:



我们想要,但是我们没有合适的工具。



但是您可以对此表示同情。我完全同意。您需要做的是强制Web服务器立即处理持久性URI,并返回当前存储在当前疯狂文件系统中的文件所在的文件。您希望将所有URI保留在文件中作为检查,并始终保持数据库为最新。您要保留不同版本和同一文档的翻译之间的关系,并且还要维护独立的校验和记录以防止文件中的意外错误。网络服务器只是不具备这些功能。当您要创建一个新文档时,您的编辑器会要求提供一个URI。



您需要能够在URI空间中更改所有权,文档访问权限,档案级别的安全性等,而无需更改URI。



这太糟糕了。但是我们会解决这种情况。在W3C中,我们使用Jigedit(Jigsaw编辑服务器)功能来跟踪版本,并尝试使用文档创建脚本。如果要开发工具,服务器和客户端,请注意此问题!



这个借口也适用于许多W3C页面,包括这一页面:我说的不是我做的,而是这样做。



我为什么要在乎?



当您在服务器上更改URI时,您将永远无法完全确定谁将引用旧URI。这些可以是来自常规网页的链接。书签到您的页面。URI可能已经写给朋友的信中了。



当有人单击链接而断开链接时,他们通常对服务器所有者失去信心。他也因无法实现自己的目标而在情感上和现实上都感到失望。



许多人不断抱怨链接断开,希望损坏显而易见。我希望文件消失的服务器维护者的声誉受损也很明显。



所以我该怎么做?URI设计



网站管理员负责分配可以在2年,20年或200年内使用的URI。这需要体贴,组织和投入。



如果某些信息发生变化,URI也会发生变化。如何设计它们非常重要。 (什么,URI设计?我需要设计URI?是的,您应该考虑一下)。设计基本上意味着URI中没有任何信息。



创建文档的日期-发出URI的日期-永远不变的东西。这对于将使用新系统的请求与使用旧系统的请求分开是非常有用的。这是URI的良好起点。如果文档过时,即使将来与文档相关,这也是一个好的开始。



唯一的例外是,该页面故意是“最新”版本,例如对于整个组织或其中的很大一部分。



http://www.pathfinder.com/money/moneydaily/latest/


这是《金钱》杂志《金钱每日》的最后一栏。该URI不需要日期的主要原因是,没有理由存储将在日志中保留下来的URI。当Money消失时,Money Daily的概念将消失。如果要链接到内容,则应在存档中单独链接到内容:



http://www.pathfinder.com/money/moneydaily/1998/981212.moneyonline.html


(看起来不错。假设“金钱”在pathfinder.com的生命中将具有相同的含义。重复的“ 98”和不必要的“ .html”,但否则看起来像一个强URI。



抛开什么



所有!除了创建日期之外,将任何信息放入URI都是一种麻烦的乞求方式。



  • 作者的姓名责备可能会随着新版本而改变。人们离开组织,然后将事情传递给其他人。

  • 主题这个非常困难。起初他总是很帅,但是变化很快。我将在下面详细讨论。

  • 状态目录,例如“旧”,“草稿”等,更不用说“最新”和“酷”,出现在所有文件系统上。文档更改状态-否则创建草稿就没有意义。无论其状态如何,文档的最新版本都需要一个永久标识符。使状态不显示名称。

  • . W3C , . , , , , , . , , , - , ! .

  • . . "cgi", ".html" . , 20 HTML , . W3C ( ).

  • 软件机制在URI中,查找“ cgi”,“ exec”以及其他尖叫“查看我们正在使用的软件”的术语。任何人都想一生致力于Perl CGI脚本吗?没有?然后删除.pl扩展名。阅读服务器手册,了解如何执行此操作。

  • 磁盘名称。来吧!但是我已经看到了。


因此,我们网站上最好的例子就是



http://www.w3.org/1998/12/01/chairs


…W3C主席会议记录的报告。



主题和主题分类



我将详细介绍这种危险,因为这是最难避免的事情之一。通常,当您按进行中的工作对文档进行分类时,主题以URI结尾。但是这种故障将随着时间而改变。区域名称将改变。在W3C上,我们希望将MarkUP更改为Markup,然后将HTML更改为反映该部分的实际内容。此外,名称空间通常是平坦的。 100年后,您确定不想重复使用任何东西吗?例如,在我们短暂的生命中,我们已经想重用“历史记录”和“样式表”。



这是组织网站的一种诱人方式,也是组织包括整个Web在内的任何组织的一种诱人方式。这是一个很好的中期解决方案,但从长远来看,它具有严重的缺点。



部分原因在于意义哲学。语言中的每个术语都是潜在的聚类对象,每个人可能对含义有不同的认识。由于对象之间的关系更像是蜘蛛网而不是树,因此即使同意蜘蛛网的人也可以选择树的不同表示形式。这些是我(通常是重复的)关于等级分类作为一般解决方案的危险的一般性评论。



实际上,当您在URI中使用主题名称时,您将自己与某种分类联系在一起。您将来可能会选择其他选项。然后,URI将受到侵犯。



使用主题区域作为URI的一部分的原因是,通常委派对URI空间的各个子部分的责任,在这种情况下,您需要负责该子空间的组织机构的名称-单位,组或其他名称。这是URI与组织结构的绑定。通常只有当URI下方(左)受日期保护时,它才是安全的:1998 / pics对您的服务器可能意味着“ 1998年pics是什么意思”,而不是“我们使用我们现在称之为图片。”



不要忘记您的域名



请记住,这不仅适用于URI中的路径,还适用于服务器名称。如果您有用于不同用途的单独服务器,请记住,在不破坏许多链接的情况下,无法更改这种分隔。域名“ cgi.pathfinder.com”,“安全”,“ lists.w3.org”等一些经典错误,例如“看看我们今天使用的软件”。它们旨在促进服务器管理。无论域代表公司中的特定部门,文档状态,访问级别还是安全级别,在对多种类型的文档使用多个域名之前,请务必非常小心。请记住,您可以在一个可见的Web服务器中隐藏许多Web服务器,使用重定向和代理。



是的,还要考虑您的域名。您不希望在更改产品系列并停止生产肥皂后被称为soap.com(对现在拥有soap.com的人表示抱歉)。



结论



将URI保存2年,20年,200年甚至2000年显然并不像听起来那样容易。但是,在整个Internet上,网站管理员正在做出决策,这确实会使他们将来很难面对。这通常是因为他们使用的工具的作用是仅在当前阶段提供最佳网站-而且没有人估计当一切都改变时链接将会发生什么。但是,这里的意思是很多很多可以更改,并且您的URI可以而且应该保持不变。这只有在考虑如何创建它们时才有可能。



也可以看看:



补品



如何删除文件扩展名...



...从当前基于文件的Web服务器中的URI?



例如,如果您使用的是Apache,则可以对其进行配置以协商内容。您将文件扩展名(例如.png)保存在文件(例如mydog.png)中,但是没有该文件扩展名也可以链接到Web资源。然后,Apache检查目录中具有该名称和任何扩展名的所有文件,并可以从该文件集中选择最好的文件(例如,GIF和PNG)。无需将不同类型的文件放在不同的目录中,实际上,内容协商将无法进行。



  • 配置服务器以协商内容

  • 始终引用不带扩展名的URI


扩展链接仍然可以使用,但是会阻止您的服务器选择当前可用的最佳格式以及将来的最佳格式。



(其实mydogmydog.pngmydog.gif-代码和网络资源mydog-通用资源的内容类型,mydog.png以及mydog.gif-一个特定类型内容的资源)。



当然,如果您要编写自己的Web服务器,则最好使用数据库将持久性ID绑定到其当前格式,尽管要提防数据库的无限增长。



耻辱董事会-故事1:第7频道



在1999年期间,我跟踪了由于页面积雪导致学校停课的情况 http://www.whdh.com/stormforce/closings.shtml不要等待信息出现在电视屏幕的底部!我已经从我的主页链接了它。2000年的第一场大雪风暴来了,我检查了一下页面。它说:



-截至。

目前没有关闭。如果出现天气警告,请回来。




不可能是同一场强风暴。缺少日期很有趣。但是,如果您转到网站的主页,则会有一个大的“封闭式学校”按钮,该按钮会导致该页面http://www.whdh.com/stormforce/包含一长串封闭式学校。



也许他们更改了获取列表的系统-但他们不需要更改URI。



耻辱董事会-故事2:Microsoft Netmeeting



随着对Internet的日益依赖,聪明的想法出现在了应用程序中,您可以嵌入到制造商网站的链接。这已经被使用和滥用了很多,但是-您不能更改URL。就在前几天,我尝试了来自Microsoft Netmeeting 2 /“帮助”中的某个客户端/“ Microsoft”中的“ Web” /“免费”内容菜单中的链接,并收到404错误-服务器未找到响应。也许已经解决了……



©1998 Tim BL



历史记录:在20世纪末,“酷”一词被人们认可,尤其是在年轻人中间,它表示时尚,品质或适当性。匆匆忙忙地选择URI路径通常是出于“实用”或“长寿”的考虑。这篇文章是试图将精力转移到追求酷炫的背后。



也可以看看:






All Articles