Как работает сокращение URL? [закрыто]


87

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


65
всего 3 близких голоса? давай, он хочет чему-то научиться, закрой быстрее !!!
— IAdapter 01

22
Это был именно тот вопрос, который у меня был, и я очень разочарован, увидев, что он закрыт. Это не двусмысленно или неполно - он очень конкретен в том, о чем спрашивает.
— thumbtackthief

3
@bmargulies Я думаю, что вопрос не следует закрывать, это было очень полезно и даже ответы, также думаю, что 43 голоса за и вы решили его закрыть .. почему ??
— Амрут А.

Ответы:


40

Вики - твой друг

Обычно в качестве заполнителя используется веб-сайт с более коротким названием, например bit.ly.

Затем bit.ly генерирует для пользователя ключ, который генерируется случайным образом, чтобы не повторяться. С 35 вариантами символов и 8 или около того значениями произведите вычисления. Это много возможных ключей. Если URL-адрес равен ранее существовавшему ключу, я помню, как где-то читал, что они также повторно используют ключи.

На самом деле они не используют конкретный язык программирования, они просто используют простое перенаправление URL-адресов, которое, как мне кажется, можно сделать с помощью HTML.


ох, это круто. Большое спасибо
— prap19 01

25
Перенаправление НЕ выполняется с помощью HTML, оно выполняется с помощью заголовков HTTP. (Код состояния 301 или 302, в зависимости).
— Yahel

Ладно, в этом было бы больше смысла. Благодарю за разъяснение.
— Дэниел Г. Уилсон

Для перенаправления они должны использовать заголовок Location.
— Дживан Патил

26

Специалисты по сокращению URL просто генерируют короткий код, сопоставляют целевой URL с коротким кодом и предоставляют новый URL. Посещение URL-адреса выполняет поиск в базе данных с коротким кодом в качестве ключа и перенаправляет вас на целевой URL-адрес. Между сокращенным URL-адресом и целевым URL-адресом не существует алгоритмической ассоциации, поэтому вы не можете "отменить сопоставление" его, не пройдя через системы сокращения URL-адресов.

Вы можете сделать это с любым языком программирования и хранилищем данных. Генерация кода также тривиальна для обеспечения уникальности; если у вас есть увеличивающийся первичный целочисленный ключ, вы можете просто закодировать ключ как base62 и использовать его. Поскольку коды имеют инкрементный характер, у вас никогда не будет конфликта.


19

На самом деле процесс довольно прост: там сценарий, который запрашивает URL-адрес, генерирует случайную строку (и проверяет, что эта строка еще не используется) и помещает их в какую-то базу данных. Когда вы запрашиваете URL-адрес, другой сценарий ищет в базе данных случайную строку и, если она найдена, перенаправляет вас на сайт.

Это, конечно, более сложно в производственной среде из-за необходимых функций, таких как предотвращение злоупотреблений, фильтрация URL-адресов, предотвращение спама, проверка URL-адресов и т. Д. Но их довольно просто реализовать.


Язык не имеет значения, в основном подойдет любой.


9
"и проверяет, что эта строка еще не использовалась" .. КАК? Это самый большой вопрос
— Стьюи

3
@Stewie: SELECT * FROM mappings WHERE key = stringToCheck и проверить, вернулись ли какие-либо строки? Или что-то подобное на выбранном вами языке базы данных. Честно говоря, это самая простая часть всей проблемы.
— Дэвид Лю

@Stewie Или они могут использовать HashMap для сопоставления<key, url>
— roottraveller

@DavidLiu Разве не нужно было бы продолжать регенерировать и выдавать запросы, пока он не выдаст никаких результатов? По мере увеличения размера данных время для проверки увеличивается. В худшем случае количество запросов к вашей БД будет n-1, где n - количество «строк»; что происходит, когда у вас 100 миллионов струн?
— Stewie

@Stewie Это совсем другой вопрос, проблема с принципом самого решения. Вы правы, что проблема с регенерацией в конечном итоге станет проблемой, но, опять же, именно поэтому я сказал, что «проверка того, что строка еще не используется» - это простая часть решения. Существует множество альтернативных решений, позволяющих выполнять случайную выборку без замены.
— Дэвид Лю
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.