URL 缩短工具如何保证 URL 不会过期? [关闭]

2024-03-11

stackoverflow 上以及互联网上的其他地方都有很多关于 URL 缩短器的问题,例如

如何编写 URL 缩短器代码? https://stackoverflow.com/questions/742013/how-to-code-a-url-shortener

URL缩短器如何计算URL密钥?它们是如何工作的? https://stackoverflow.com/questions/3489377/how-do-url-shortener-calculate-the-url-key-how-do-they-work?lq=1

http://www.codinghorror.com/blog/2007/08/url-shortening-hashes-in-practice.html http://www.codinghorror.com/blog/2007/08/url-shortening-hashes-in-practice.html

然而,有一件事我不明白。例如,http://goo.gl http://goo.gl目前使用四个字符。然而,他们声称他们的短网址不会过期。正如有关编码恐怖的文章中提到的,如果他们无法回收 URL,唯一可能的解决方案就是添加一个额外的字符。

好的,到目前为止一切顺利。 4 个字符意味着大约 1500 万个唯一地址。对于像谷歌地图这样的东西,我认为这不是很多,如果你不能回收,我猜他们很快就会用完可用的地址。

现在来说说我不明白的部分。在分发地址时,他们开始用完未使用的地址。他们必须检查新生成的地址是否尚未发布。发生这种情况且地址已被使用的可能性会增加。当然,最简单的解决方案是一遍又一遍地生成新的 URL,直到找到一个免费的 URL 或生成所有 150 万个替代项。然而,这肯定不是他们实际做的,因为这太耗时了。那么他们是如何做到这一点的呢?

此外,可能有多个访问者同时请求短 URL,因此他们也必须进行一些同步。但是当需要添加第五个字符时,应该如何处理这种情况呢?

最后,在研究 URL 是如何从http://goo.gl http://goo.gl当然,我多次请求 Google 地图上的地图的短 URL。它们都不会被使用。然而,当Google严格执行URL发布后永不过期的政策时,这意味着系统中存在大量的休眠URL。同样,我假设谷歌(以及其他服务)也已经提出了解决这个问题的方法。我可以想象一个清理服务,它会回收在创建后的前 48 小时内未访问过的 URL,或者在第一周内回收不到 10 次的 URL。我希望有人也能对这个问题有所启发。

简而言之,我了解了 URL 缩短程序的一般原理,但是当这些 URL 不能过期时,我发现了一些问题。有谁知道上述问题如何解决,还有其他问题吗?


EDIT

Ok, so this http://chimprawk.blogspot.nl/2005/01/random-tinyurl-browser-updated.html博客文章揭示了一些事情。这些服务不会随机生成任何内容。它们依赖于底层数据库的自动增量功能,并对结果 id 应用简单的转换。这样就无需检查 id 是否已存在(确实不存在)并且数据库会处理同步。这仍然没有回答我的三个问题之一。这些服务如何“知道”链接在创建后是否实际使用?


为什么 URL 缩短工具不会删除条目 https://stackoverflow.com/questions/11326598/how-do-url-shorteners-guarantee-unique-urls-when-they-dont-expire#answer-15370746

我确实写了 TinyURL(十年前)来返回一个我不需要的条目。他们的回复让我意识到自己有多么可笑:他们告诉我“只需创建您需要的所有 URL”。数字本身就说明了一切:

A - 26个小写字母+26个大写字母+10个数字(合理网站的选择),使用一个字符给你62个位置(即62个缩短的URL),然后each附加字符乘以位置号除以 62:

  • 0 个字符 = 1 个 URL
  • 1 个字符 = 62 个 URL
  • 2 个字符 = 3,844(村庄中每个人 1 个 URL)
  • 3 个字符 = 238,328(同上,在一个城市)
  • 4 个字符 = 14,776,336(洛杉矶地区)
  • 5 个字符 = 916,132,832(美洲,N+Central+S)
  • 6 个字符 ~ 56,800,235,580(世界上每个人 8 个 URL)
  • 7 个字符 ~ 3,521,614,606,000(每个人 503 个,世界上每个网页 4 个)
  • 8 个字符 ~ 218,340,105,600,000(每个人 31,191 个 URL)
  • 9 个字符 ~ 13,537,708,655,000,000(每个人约 200 万个 URL)
  • 10 个字符 ~ 839,299,365,900,000,000(每个人约 1200 亿个 URL)
  • 11 个字符 ~ 52,036,560,680,000,000,000

B - 实际上需求和用途低于人们的预期。很少有人创建短 URL,而且每个人创建的 URL 也很少。大多数情况下,原始 URL 就足够了。结果是,最流行的起酥油经过多年的发展,仍然只需 4 或 5 个字符即可满足当今的需求,并且在需要时添加另一个起酥油的成本几乎为零。显然 goo.gl 和 goo.gl/maps 各自使用 5 个字符,youtube 使用 11 个(使用上面的 62 个字符,加上破折号,也许还有其他一些字符)。

C - 托管(存储 + 操作)一个 URL 的成本为 1Terabyte 每年 1000 美元,每个 TB 能够包含 50 亿个 URL,因此 1 个 URL 的托管成本为 0.2 微美元/年。然而,Shortener 的收益也很薄弱,因此业务也不是很强劲。对于用户来说,URL 的好处很难评估,但是错过链接的成本将远远高于托管成本。

D - 如果用户创建短 URL 的风险在未来几年内无法使用,那么它就没有意义,因此持久性是缩短器的主要吸引力,并且认真的缩短器可能永远不会停止为他们提供服务,除非他们被迫停业;然而这种情况已经发生了,无论如何,短网址有其缺点和优点,正如在维基百科“URL 缩短” http://en.wikipedia.org/wiki/URL_shortening(针对用户、目标站点或缩短器的各种黑客攻击的风险;例如,人们可以通过机器人请求千兆数量的 URL 来攻击缩短器,大多数缩短器肯定会抵御这种威胁)。

凡尔赛,2013 年 3 月 12 日星期二 20:48:00 +0100,已编辑 21:01:25

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

URL 缩短工具如何保证 URL 不会过期? [关闭] 的相关文章