在为网站构建URL时,有哪些资源可以了解最佳实践?

时间:2011-09-20 08:00:31

标签: php url resources web

这是Why are the query parameters for many websites(MySQL) very cryptic long integers?的后续问题。在安全性和可扩展性方面。请引用任何资源(在线/离线)。

3 个答案:

答案 0 :(得分:1)

在安全性和可扩展性方面,您可以使用您想象的任何网址。

通常是人类可读性和可用性或(更常见的)搜索引擎友谊会影响URL构建规则。

比如说,PHP.NET着名的php.net/echo功能可以快速轻松地访问功能描述。这就是制作这类网址的原因,而非安全性。

答案 1 :(得分:1)

安全性和可伸缩性与URL的形成方式无关。有些网站确实使用神秘的URL作为保护图片的措施(例如Facebook),这种类型的安全性通常不受欢迎,因为每个人都通过各种方式(浏览器缓存,代理缓存,...)知道URL可以访问所谓的受保护资源。

虽然干净的URL有助于搜索引擎优化,但它通常意味着响应速度变慢,从而降低了可扩展性。考虑一个网址http://example.com/user/Lars,向您显示我个人资料的个人资料页面。如果我的帐户在数据库中链接的不是我的帐户名,而是surrogate key(某个任意数字),系统首先必须在用户表中查询我的代理键以获取其余信息。这会降低性能,因为必须再查询一个表。

答案 2 :(得分:1)

虽然我完全同意Col. Shrapnel的回答,但有些情况下长的“神秘”ID有助于提高安全性,有时甚至可扩展性。 Sharelockers(RapidShare和朋友)通常在他们的URL中使用/ID/Filename结构来通过默默无闻来增加安全性,对于某人来说,测试所有整数或公共文件名以及访问敏感信息将非常容易。

有些人还会对他们的数据库ID应用某种校验和算法,这使得某人更难以找出底层结构并“隐藏”某些类型的信息:我敢打赌很多人不愿意在线支付某些费用例如,如果订单的网址为/order/2/。使用校验和也有助于提高性能,因为您甚至无需查询数据库就可以忽略无效ID(当有人蛮力破坏您的URL时非常有用)。

长ID有助于扩展,因为它们提供了更广泛的可能数字(Slashdot had been a victim的“int(11)对每个人来说都绰绰有余”假设两次 - 抱歉找不到旧的故事),这就是为什么你现在看到Twitter和朋友使用不同的方法。

当您使用更宽的ID时,您还可以存储更多信息,例如时间戳,创建数据库记录的IP /主机名等等,这在运行分布式数据库设置时非常重要。查看MongoID class文档,了解其工作原理。