【问题标题】:Store urls in mysql using tinyurl or similar使用 tinyurl 或类似方法在 mysql 中存储 url
【发布时间】:2012-11-18 21:07:06
【问题描述】:

我想在 mysql 中存储大量唯一的、可索引的 url。它们将由用户编写,并且会得到非常广泛的认可,因此几乎所有内容都会出现。

但我不喜欢已经回答的SO questionit'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 中提供的答案。我会用的,谢谢。

标签: mysql url tinyurl


【解决方案1】:

正如用户 eggyal 所建议的,基于哈希的完整 URI 索引与使用 Tinyurl API 非常相似,只是我不需要在任何地方发送数据。那我就用那个。

注意:这里的答案只是为了给问题添加结论

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多