Сокращение URL: Какую кодировку лучше всего использовать? - PullRequest
3 голосов
/ 11 сентября 2009

Я добавляю функцию в свой проект, где мы генерируем ссылки на внутренние материалы нашего веб-сайта, и мы хотим, чтобы эти ссылки были максимально короткими, поэтому мы создадим собственный "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 дают вам короткие URL-адреса при создании ссылки на определенную координату.

Ответы [ 3 ]

3 голосов
/ 12 сентября 2009

Я бы пошел с Base-62, это самый короткий. Сокращенный URL-адрес не предназначен для того, чтобы кто-либо вручную вводил его, поэтому не беспокойтесь о чувствительности к регистру.

2 голосов
/ 11 сентября 2009

Мне было бы интересно узнать немного больше о реализации. Как эти URL-адреса будут «сокращены», или внутренние страницы, к которым осуществляется доступ, будут сохранены как сокращенные URL-адреса? В любом случае, даже если вы использовали кодировку [A-Z], вы могли бы ссылаться на 26 * 26 * 26 = 17 576 страниц только с 3 символами; о скольких внутренних веб-страницах вы говорите?

В общем, я бы опирался на требования вашего варианта использования для выбора правильного набора кодировки. Планируете ли вы, чтобы эти ссылки были доступны для "использования, кроме нажатия"? Какими будут эти применения, и как вы думаете, как они изменят кодировку? (Например, использование частей URL-адреса в качестве имени файла в файловой системе без учета регистра сокращает доступный набор символов.)

Вот информативная страница набора символов, доступная вам при написании URL.

2 голосов
/ 11 сентября 2009

Если бы это были "кликабельные URL-адреса", я бы, вероятно, использовал кодировку base-64. MIME base-64 использует пару символов, которые вы не должны использовать, но в URL достаточно незарезервированных безопасных символов, чтобы их можно было просто поменять местами. (Кроме того, вам не нужно заполнение, которое использует MIME base-64, поскольку вы знаете, когда заканчивается ваш URL.)

Вот страница, которая обсуждает один из способов сделать это .

Вы можете посмотреть на RFC2396 , чтобы точно определить, какие символы безопасны в URI, если вы хотите перепроверить.

...