【问题标题】:URL Shortening: What's the best encoding to use?URL 缩短:最好使用什么编码?
【发布时间】:2010-11-27 14:10:21
【问题描述】:

我正在向我的项目添加一个功能,我们正在生成指向我们网站内部内容的链接,并且我们希望这些链接尽可能短,因此我们将制作自己的“URL Shortener”。

我想知道用于生成的短 URL 的最佳编码/字母是什么。 这在很大程度上是一个主观问题,我想知道您对最佳方法/权衡的看法。

我想到的几个选项:
- 数字,大写 + 小写(以 62 为基数)
- 数字,仅小写(以 36 为基数)
- 基数 32 (http://www.crockford.com/wrmg/base32.html)
- linkpot.net(使用常见的短英文单词)

当然,后两个更适合点击以外的用途,前两个更适合 Twitter。

另外,如果我要使用“仅可点击”的 URL,我想让字母表尽可能大,并添加其他符号。

  • 我可以在不会进行 URL 编码的 URL 中使用哪些符号?
  • 应该使用什么符号?其中一些会被证明是有问题的吗?例如,我正在考虑斜线和点。

你怎么看?

注意:这些 URL 的主要目标是 Twitter。记住这一点,我们可能应该拥有最大的字母表,因为大多数人都会点击。但是,我对您以其他方式(通过电话、印刷纸等)使用短 URL 的人的体验感兴趣。这种情况发生的可能性有多大?

注意 2:我不是在制作“又一个 URL 缩短器”,请不要用反对票来谴责我。我们正在为我们网站的内部内容生成短 URL,不允许任何人缩短任何 URL。想象一下,当您生成指向特定坐标的链接时,Google 地图会为您提供短网址。

【问题讨论】:

    标签: encoding url-shortener


    【解决方案1】:

    我会选择 Base-62,它是最短的。缩短的 URL 并不意味着任何人都可以手动输入,所以不必担心区分大小写。

    【讨论】:

      【解决方案2】:

      如果这些是“仅可点击的 URL”,我可能会使用 base-64 编码。 MIME 的 base-64 使用了一些您不应该使用的字符,但是 URL 中有足够多的未保留的安全字符,您可以将它们换掉。 (此外,您不需要 MIME 的 base-64 使用的填充,因为您知道您的 URL 何时结束。)

      这里是a page that discusses one way to do this

      如果您想仔细检查,您可以查看RFC2396 以确定 URI 中哪些字符是安全的。

      【讨论】:

        【解决方案3】:

        我很想知道更多关于实施的信息。这些 URL 将如何“不缩短”,或者将被访问的内部页面保存为缩短的 URL?无论哪种情况,即使您使用 [A-Z] 的编码集,您也可以仅使用 3 个字符引用 26 * 26 * 26 = 17,576 个页面;您指的是多少内部网页?

        总的来说,我会根据您的用例要求来选择正确的编码集。您是否计划将这些链接用于“点击以外的用途”?这些用途是什么,您如何怀疑它们会改变编码? (例如,在不区分大小写的文件系统上使用部分 URL 作为文件名会减少可用字符集。)

        Here's 一个关于您在编写 URL 时可用的字符集的信息页面。

        【讨论】:

        • 感谢您的回答。在内部,我将拥有由用户创建的“实体”,它们将具有唯一的整数 ID。然后,我将把这些作为缩短的 URL 公开,只是为了让它在 twitter 上更短......所以,你可以拥有 mydomain.com/1525343 或 mydomain.com/a4D,这对我来说意味着相同,但它会是更短。
        • 如果这些将被外部客户端使用,我会更倾向于更简单的编码范围,例如 [0-9a-z]。我不会包含 [A-Z],因此用户可以手动输入 URL,而不必担心大写/小写。即使有这样的 36 个字符范围,您也可以完成大量的缩短。例如,仅 5 个字符就能为您带来 60,466,176 个唯一的缩短网址。
        猜你喜欢
        • 2011-01-23
        • 2015-03-11
        • 1970-01-01
        • 2010-11-19
        • 2012-02-13
        • 1970-01-01
        • 2020-12-29
        • 2023-03-03
        • 1970-01-01
        相关资源
        最近更新 更多