Closed. 这个问题是无关 /help/closed-questions 。目前不接受答案。
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 是否已存在(确实不存在)并且数据库会处理同步。这仍然没有回答我的三个问题之一。这些服务如何“知道”链接在创建后是否实际使用?