Hacker News 中文摘要

RSS订阅

Cool URIs 不会改变(1998) -- Cool URIs Don't Change (1998)

文章摘要

文章强调,酷的URI(网址)不会改变。理论上URI不应变动,但现实中人们常因网站重组等原因更改它们。作者建议在创建URI时应有长远规划,确保其稳定持久,避免因组织调整导致链接失效。

文章总结

好的,这是根据您的要求,对原文主要内容进行的中文重述,保留了核心细节,并删减了与主题无关的冗余内容。


核心观点:酷的URI永不改变

一个“酷”的URI(统一资源标识符)是那些不会改变的URI。理论上,URI本身不会改变,是人们改变了它们。虽然理论上没有理由去改变URI,但实践中却有无数理由。例如,域名所有者理论上可以永久持有域名,但现实中仍有大量失效链接存在,这往往源于缺乏远见。

常见的、导致URI改变的糟糕理由:

  1. 网站改版:如果旧URI无法在新版中继续运行,说明当初的命名选择非常糟糕。设计新URI时,应确保它们能在下一次改版后依然有效。
  2. 内容管理混乱:当网站内容庞杂,难以追踪哪些已过时、哪些是机密时,有人会选择直接关闭所有内容。更好的解决方案是提前规划,为每个文档记录其分发范围、创建日期和过期日期。
  3. 文件迁移:这是一个很牵强的理由。许多服务器(如Apache)允许你灵活地建立URI与文件系统位置之间的映射关系。应将URI空间视为一个抽象空间,然后将其映射到实际的实现方式上。
  4. 维护人员变更:如果URI中包含了维护者的名字或目录,一旦人员变动,URI就会失效。
  5. 技术实现变更:例如,从CGI脚本改为二进制程序。将URI与具体技术实现(如“cgi-bin”、“.pl”)绑定,一旦技术更新,所有URI都会失效。好的做法是使用不暴露实现细节的URI,例如 http://www.nsf.gov/pubs/1998/nsf9814/nsf9814.htm 就比 http://www.nsf.gov/cgi-bin/getpub?nsf9814 稳定得多。
  6. 依赖URN(统一资源名称):有人认为URN比URL更持久,因此可以随意制造失效链接。这是一种误解。如果组织有能力创建持久的URN,那么现在就应该用同样的思路来设计HTTP URI,因为HTTP本身并不会导致URI不稳定。

为什么你应该在意?

当你改变一个URI时,你永远无法知道谁链接了它。这些链接可能来自网页、书签,甚至写在信件边缘。当有人点击一个失效链接时,他们会对服务器所有者失去信心,并感到沮丧。这直接损害了服务器维护者的声誉。

如何设计URI?

设计URI的核心是“做减法”,即剔除那些会变化的信息。一个不会改变的信息是文档的创建日期,用它作为URI的开头是个好主意。例如,http://www.w3.org/1998/12/01/chairs 就是一个好的设计。

URI中应该剔除的信息:

  • 作者姓名:作者会变更。
  • 主题:主题分类会变化,且不同人对同一主题的理解可能不同。
  • 状态:如“old”、“draft”、“latest”等,文档状态会改变。
  • 访问权限:如“team”、“member”、“public”,文档的访问权限会变化。
  • 文件扩展名:如“.html”、“.cgi”,未来可能不再使用这些格式。
  • 软件机制:如“cgi”、“exec”、“.pl”等,暴露了当前使用的技术。
  • 磁盘路径:这是最不应该出现的。

关于域名:

域名本身也适用同样的原则。不要轻易使用多个域名来区分文档类型、访问级别或安全级别,因为这种划分未来可能难以改变。同时,要慎重选择域名,确保它不会限制你未来的业务发展。

结论:

让URI在2年、20年甚至200年后依然有效,并非易事。然而,许多网站管理员正在做出一些决定,使得未来的维护变得困难。这往往是因为他们只关注当下的网站呈现,而忽略了链接的长期稳定性。关键在于,许多事情都会改变,但你的URI可以且应该保持不变。这需要你在设计URI时就深思熟虑。

评论总结

根据评论内容,总结如下:

主要观点:

  1. 长期保存与可访问性:评论强调“酷URL”不仅关乎美观,更关乎长期保存(如DOI的动机)。原始评论指出:“It is not only about 'coolness' but long-term preservation too”(评论2),并提到该页面在同一URI上已存在28年,随时间推移更具可信度(评论3)。

  2. 技术缓解与挑战:现代技术(如301/302重定向、WordPress的自动重定向)已部分解决URL持久性问题,但忽视、重组或网站下线仍导致链接失效。评论4指出:“SEO has made 'old URLs staying live' more of a widespread concern... WordPress etc ship with inbuilt redirects”,但“eventually neglect, removal, reorgs still happens”。评论7以微软和新闻网站为例,批评其频繁更改URL导致链接失效。

  3. 实践建议:评论8建议静态网站采用“仅追加生成”策略,保持dist/目录状态,避免URI断裂。评论4强调使用日期作为URI分类的一部分(如1998/pics)可绑定组织责任,但需日期保护。

平衡性: - 支持方:评论3、8、9积极倡导URL持久性,认为这是可维护性的核心(评论9:“I work really hard to maintain on my websites”)。 - 反对方:评论4、5、7指出技术缓解有限,实际中仍存在大量失效链接(如NSF.gov的404错误,评论5)。评论6则调侃页面布局的随机性,暗示设计问题。

关键引用(保留中英文): - 评论2:“It is not only about 'coolness' but long-term preservation too”(不仅关乎“酷”,更关乎长期保存) - 评论4:“SEO has made 'old URLs staying live' more of a widespread concern... eventually neglect, removal, reorgs still happens”(SEO使旧URL存活成为更广泛关注的问题……但忽视、移除、重组仍会发生) - 评论8:“If you run a statically generated website, I recommend append-only generation... guarantees you don't break URIs”(若运行静态网站,建议仅追加生成……确保不破坏URI)