酷的 URI 不会改变 (1998)

酷的 URI 不会改变 (1998)

Hacker News 摘要

原标题:Cool URIs Don't Change (1998)

这篇文章由万维网发明者 Tim Berners-Lee 于1998年撰写,主要探讨了如何设计具有持久生命力的网页地址。

什么是酷的 URI

一个酷的 URI 是指那些永远不会改变的地址。理论上,域名所有者完全拥有其下的命名空间,可以对其进行掌控。除了破产或无力支付服务器费用等极端情况,没有任何理论理由让一个文档从网络上消失或改变地址。

常见的改变理由及其反驳

虽然理论上不该变,但现实中 URI 经常变动,通常源于以下借口:

• 网站重组:如果因为重新设计网站就必须更改旧地址,说明最初的地址设计得很糟糕。

• 内容过多难以管理:有人担心无法追踪哪些内容已过时或需保密,索性全部关掉。解决办法是在创建文档时就记录元数据,包括发布范围、创建日期和失效日期。

• 文件移动:这是最拙劣的借口。诸如 Apache 等服务器允许在抽象的 URI 空间与物理文件系统之间建立灵活映射,开发者不应被文件存储位置束缚。

• 维护者变更:如果 URI 中包含了维护者的名字,这本身就是设计错误。

• 技术更迭:将页面放在 cgi-bin 目录或在地址中包含 .pl 后缀,暴露了服务器的运行机制。一旦更换实现方式,所有地址都会失效。

对 URN 的误解

有些人认为不需要担心 URL 的持久性,因为未来的 URN(统一资源名称)会解决所有问题。作者认为这是一种幻觉。如果一个组织现在无法管理好持久的 HTTP URI,那么未来也无法管理好 URN。HTTP 本身并不会导致地址不稳定,不稳定的是管理组织。

缺乏工具的现状

作者承认,当时的服务器软件缺乏开箱即用的持久性管理功能。理想的系统应该允许网页编辑器向系统申请一个 URI,并能追踪不同版本、翻译版本和校验和。

为什么要关注 URI 的持久性

更改地址会损害用户信任,导致他人网页上的链接失效,书签无法打开。这种挫败感会直接损害服务器维护者的名誉。

如何设计持久的 URI

网管的责任是分配能维持2年、20年甚至200年的 URI。设计 URI 的核心原则是:剔除所有可能改变的信息。

• 保留创建日期:文档的创建日期是永远不会改变的,非常适合作为 URI 的开头。

• 剔除作者姓名:作者可能会变。

• 剔除主题关键词:分类体系变化很快,容易失效。

• 剔除状态:像 draft、old 或 latest 这种词汇不应出现在 URI 中。文档的状态会变,但同一份文档的标识符不该变。

• 剔除访问限制:不要在地址中区分团队内部、会员或公共访问。

• 剔除文件扩展名:今天使用 HTML,20年后可能不再使用。

• 剔除软件机制:不要出现 cgi、exec 等字眼,也不要包含 .php 或 .asp。

• 剔除磁盘名称:不要暴露服务器的物理磁盘信息。

关于主题分类的危险性

使用主题分类很容易导致地址失效。由于人们对词汇的理解不同,且学科分类会随时间演变,一旦分类调整,地址就会断裂。如果必须使用主题,建议将其放在日期之后,表示“在那一年我们对该主题的定义”。

关于域名的建议

不仅是路径,服务器域名也应慎重。不要使用反映特定技术或管理结构的子域名,例如 cgi.example.com 或 lists.w3.org。因为这些划分在未来可能极难更改。

实现技术建议

对于使用 Apache 等文件型服务器的用户,可以通过内容协商功能去除文件扩展名。例如,文件实名为 mydog.png,但在引用时只使用 mydog。服务器会自动匹配最合适的格式。

反面教材案例

• 案例一:WHDH 电视台的一个雪天学校停课查询页面。由于系统升级,原有的 URI 虽然还在但内容变空了,新内容被移到了另一个地址,这完全没有必要。

• 案例二:微软的 Netmeeting 软件内置了指向其官网的“免费资源”链接。由于官网地址变动,软件内的链接直接返回了 404 错误。这说明即便对于大型软件厂商,保持链接一致性也至关重要。


原文:https://www.w3.org/Provider/Style/URI

评论:https://news.ycombinator.com/item?id=49231809

Report Page