优秀的URI不会改变
什么样的UR称得上优秀的URI?
优秀的URI就是不需要改变的URI。
是什么迫使URI做出改变?
不改变的是URI:改变的是人。
理论上人们没有什么原因去改变URIs,但是在实际运行中却存在着成百上千的原因。
从理论上讲,域名的所有者拥有该域名下的所有URI。 理论上您域名下的所有URI是完全由您控制的,所以你是可以按照自己喜欢的方式使URI变得稳定。迫使一个文件地址消失的原因是域名过期或服务器没有在继续运行。这就是为了会有这么多改来该去的链接。其中的一部分是由于缺乏远见导致的。 下面是您可以听到的一些原因。
为了使网站更好,我们刚改版了网站。
你真的觉得旧的URI已经不能再继续使用了吗?如果是这样,那么慎重的设计新的URI,让在在下次改版的时候无需改变它。
我们有大量过期的、保密的、无效的的文档需要进行区分
我们需要在文档公开前仔细的筛选,文件是不是保密的。解决上述问题还是需要进行深思熟虑。确保公开的每个档案都是可以被公布的,并在meta信息中标注出创建日期和失效日期。
我们发现不得不移动文件
要知道这是一个最懒的借口,很多人不知道像Apache这样的服务器会在URI和物理路径间为你提供一个灵活的设置。把你的URI看成是抽象空间,将其映射到具体的物理空间,然后将映射告诉服务器。你只要修改映射关系就可来解决移动文件带来的URI改变的问题。
我们曾经使用的是一个CGI脚本,现在我们使用的是一个二进制程序。
有一个疯狂的想法,即由脚本制作的页面必须在“cgi-bin”或“CGI”文件夹内。 这样做暴露了您服务器的运行机制。在不改变内容的情况下, 你转变机制,你所有的URI都会发生变化。
我不认为URI是需要持久的,需要持久的那是URN。
这是URN讨论后最糟糕的影响,有些人认为,命名空间的研究,会使是链接更加持久化,URN将解决一切问题。如果你是这部分人,那么允许我将你叫醒。
我看到的大多数URN看起来向HTTP URI,换句话说,如果你认为你的团队有建立持久的URN的能力,那么现在就让他们建立HTTP URI,这将不会给你的URI带来不稳定。
我们想做,但是我们没有合适的工具。
你需要做的是让Web服务器在瞬间查找一个持久的URI,并返回该文件。 您希望能够将URL存储在一个检查文件里,并与存放数据不断保持更新。 您想存储不同版本和相同的文件翻译,并希望保持一个独立的校验和记录。 当你想创建一个新的文档,您的编辑框需要您提供一个URI。
你需要在不改变URI的情况下可以改变URI的权限及安全级别等。这看起来很难,但是我们最终会实现,W3C使用的是Jigedit,他可以通过脚本控制服务其和客户端。
我为什么要在乎这些?
当你在服务器上修改了URI,你不会知道还有多少人会使用旧的URI。他们可能把你的链接发布到了其他网站上,他们可能把你的链接存为了书签。他们可能把你的URI告诉了别人。
当一些人点击链接,但是发现链接无法打开的时候,他们就会对网站拥有者失去信心。他们会因为不能完成自己想要的目标而沮丧。
我该怎么去设计URI?
使一个URI可以持续2年、20年、200年,这是一个网站管理员的责任。这需要思想、组织和承诺。
一般来说URI改变时因为文档里的一些信息发生了改变,这和URI的设计至关重要的。
文件的创建日期这是不会改变的。这对分离旧的系统和新的系统非常有用。这能很好的让你开始设计一个URI。即使这个文件会被多次修改,但是他还是只会有一个创建日期。
唯一例外的是一个网页是故意“最新”的,例如频道的首页。
http://www.pathfinder.com/money/moneydaily/latest/
此URI不需要日期的主要原因是此页面时不断更新的,如果你需要者页面的存档,存档地址可以是
http://www.pathfinder.com/money/moneydaily/1998/981212.moneyonline.html
(这个URI看上去不错,除了”98″和“.html”有些多余)
哪些信息需要被抛弃?
在使用日期以后,把任何信息放入URI都有可能带来问题。
- 作者的名字 著作权可能会因为版本的修改而改变,比如团队里的某些人离开使事务被转手。
- 标题 这个是非常棘手的,他总是现在看起来非常合适,但是过些时间久需要改变。
- 状态 如”old”,”new”,”latest”等,文件很可能会改变状态。
- 访问权限 一个文件的访问权限可能会因为情况而改变,不要将文档放在”public”、”team”下。
- 文件扩展名 即使是”.html”也有可能会改变。
- 程序机制 如”cgi”和”exec”
- 磁盘名称 这个也有用使用的!
下面是一个很好的例子:
http://www.w3.org/1998/12/01/chairs
一份关于W3C椅子的会议报告。
按文章主题进行分类
这是非常危险的操作。通常情况下,你URI中的文档分类是按你正在进行的工作进行区分的。这就可能带来隐患,你从事的领域可能会在今后发生变化。在W3C,我们期望吧”MarkUp”修改为”Markup”,后来又期望修改为“HTML”,我们不能保证现在的命名在以后是否适用。
按主题分类这是一个非常理想的分类方案,包括把整个互联网进行分类一样,这是一个非常不错的解决办法,但是从长远看存在着严重的缺陷。每个人对语言中的每个聚类的主题词都有不同的理解,网络之间的主题关系,并不是像树型那么简单。事实上,当你在你的URI中绑定分类时,未来你很有可能去改变这个分类,到时候URI就需要跟随着改变。
在URI中使用主题进行分类的一个原因是你需要一个名称作为URI的一个部分来组织内容,比如内容细分,通常来说在日期存在(日期在左边)的情况下还是非常安全的,1998/pics可以理解为,我们在1998年的照片。而不是照片中1998年我们在做什么。
不要忘记你的域名
请记住,这不仅适用于URI“路径”,同时也使用与服务器名称。 在域名中无论代表公司,或文件状态,或访问级别,或者安全级别划分,要非常非常小心,特别是在使用多个域名访问一个文件的时候,不要忘记,你可以在服务器端使用重定向。
结论
保持URI2年,20年,200年甚至是2000年不变并不是那么的简单,站长去决定未来真的是很难,因为他们现在使用的工具,看起来是现在最好的,没有人知道未来会怎么样,很多事情会改变,但是URI还是需要保留,我们唯一可以做的就是思考如何设计URI。