2009-09-11 3 views
2

Я добавляю функцию в свой проект, где мы создаем ссылки на внутренние материалы нашего веб-сайта, и мы хотим, чтобы эти ссылки были как можно короче, поэтому мы создадим собственный «URL Shortener».Укорачивание URL: какая кодировка лучше всего использовать?

Мне интересно, что лучше всего кодировать/алфавит использовать для генерируемых коротких URL-адресов. В основном это субъективный вопрос, я хотел бы знать, что ваши мнения касаются наилучшего подхода/компромисса.

Несколько вариантов я надумал:
- Digits, прописные + в нижнем регистре (основание 62)
- Digits, только в нижнем регистре (основание 36)
- Base 32 (http://www.crockford.com/wrmg/base32.html)
- linkpot.net (используя общие короткие английские слова)

Конечно, во втором случае лучше использовать, кроме щелчков, а первые два лучше для Twitter.

Кроме того, если я использую только URL-адреса, доступные только по клику, я хотел бы сделать алфавит как можно большим, добавив другие символы.

  • Какие символы я могу использовать в URL-адресах, которые не будут кодироваться в URL?
  • Какие символы должны Использую? Могут ли некоторые из них оказаться проблематичными? Например, я думаю, что косая черта и точка.

Что вы думаете?

ПРИМЕЧАНИЕ. Основной целью этих URL является Twitter. Помня об этом, мы должны, вероятно, иметь самый большой алфавит, поскольку большинство людей будут щелкать. Тем не менее, меня интересует ваш опыт работы с людьми, использующими короткие URL-адреса другими способами (по телефону, в печатной бумаге и т. Д.). Насколько вероятно, что это может произойти?

ПРИМЕЧАНИЕ 2. Я не делаю «еще один сократитель URL», пожалуйста, не осуждайте меня с помощью downvotes. Мы создаем короткие URL-адреса для внутренних материалов на нашем сайте, не позволяя никому сокращать любой URL-адрес. Представьте, что Карты Google предоставляют короткие URL-адреса при создании ссылки на определенную координату.

ответ

2

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

Вот a page that discusses one way to do this.

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

2

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

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

Here's информативная страница по набору символов, которую вы можете получить при написании URL-адреса.

+0

Спасибо за ваш ответ. Внутренне у меня будут «сущности», созданные пользователями, у которых будет уникальный идентификатор целого числа. Затем я расскажу об этом как сокращенном URL-адресе, чтобы сделать его короче для твиттера ... Итак, у вас может быть mydomain.com/1525343 или mydomain.com/a4D, что будет означать для меня то же самое, будет короче. –

+0

Если они будут использоваться внешними клиентами, я бы больше склонялся к более простому диапазону кодирования, например [0-9a-z]. Я бы не включил [A-Z], чтобы пользователи могли вручную вводить URL-адреса, не беспокоясь о верхнем/нижнем регистре. Даже с 36-символьным диапазоном, таким образом, вы достигаете огромного количества сокращений. Например, только 5 символов связывают с вами 60 466 176 уникальных сокращенных URL-адресов. – fbrereto

2

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

Смежные вопросы