【发布时间】:2012-11-18 21:07:06
【问题描述】:
我想在 mysql 中存储大量唯一的、可索引的 url。它们将由用户编写,并且会得到非常广泛的认可,因此几乎所有内容都会出现。
但我不喜欢已经回答的SO question 和it's predecessor。实际上我认为这样做可能有一种“更好”的方式,但我并不完全明白这其中的含义,所以这就是我问这个问题的原因。
为此目的使用 tinyurl.com 的 API 有哪些优点/缺点?在this link 我们可以看到一篇关于如何做到这一点的文章。只是这段代码(可能更短,但我更喜欢在函数中使用它):
function createTinyUrl($strURL)
{
return file_get_contents("http://tinyurl.com/api-create.php?url=".$strURL);
}
然后我只需要比较tinyurl.com/example 中的example 来检查链接的唯一性。从维基百科文章中我们可以阅读:
如果 URL 已被请求,TinyURL 将返回现有别名而不是创建重复条目。
缺点(与使用任何集中式系统基本相同):
Tinyurl 服务器可能会暂时或永久关闭。以防万一,完整的 url 将存储在另一个未索引的字段中。
不可逆。你可以从你的 url 中得到一个 tinyurl,但反过来更难。但是,第一个问题的解决方案也解决了这个问题。
在我的例子中,这些 url 不是私有的,但这可能会阻止某人使用此解决方案。
延迟。请求可能会慢一些,但由于它是服务器到服务器的对话,我认为这不会很明显。不过会做一些基准测试。
您可以看到使用此方法的任何其他缺点吗?使用它的主要原因是没有重复的条目并使它们可索引。
【问题讨论】:
-
如果您不关心排序,完整 URI 上的基于哈希的索引会非常快...
-
我想过,但这种情况下可能会出现碰撞问题。除了this question 中提供的答案。我会用的,谢谢。