Как работают службы коротких URL-адресов?
Как сделать услуги, как TinyURL или Метамарк работы?
Они просто связывают крошечный URL-ключ с [виртуальным?] веб-страница, которая просто предоставляет "http-перенаправление" на исходный URL-адрес? или в этом есть больше "магии"?
[первоначальную формулировку]
Я часто использую службы сокращения URL, такие как TinyURL, Metamark и другие, но каждый раз, когда я это делаю, мне интересно, как работают эти службы. Создают ли они новый файл, который будет перенаправлен на другую страницу, или они использовать поддомены?
4 ответов:
нет, они не используют файлы. Когда вы нажимаете на такую ссылку, HTTP-запрос отправляется на их сервер с полным URL-адресом, например http://bit.ly/duSk8wK (ссылки на этот вопрос). Они читают часть пути (здесь
duSk8wK), который сопоставляется с их базой данных. В базе данных, они находят описание (иногда), ваше имя (иногда) и реальный адрес. Затем они выдают перенаправление, которое является ответом HTTP 302 и целевым URL-адресом в заголовке.это прямое перенаправление важный. Если бы вы использовали файлы или сначала загрузили HTML, а затем перенаправили, браузер добавил бы TinyUrl в историю, что не то, что вы хотите. Кроме того, сайт, на который перенаправляется, будет видеть реферер (сайт, с которого вы изначально пришли) как сайт, на котором находится ссылка TinyUrl (т. е. twitter.com, ваш собственный сайт, где бы ни была ссылка). Это так же важно, чтобы владельцы сайтов могли видеть, откуда приходят люди. Это тоже не будет работать, если страница загружается что переадресует.
PS: есть несколько видов переадресации. HTTP 301 означает: перенаправление постоянное. Если это произойдет, браузер не будет запрашивать bit.ly или сайт TinyUrl больше, и эти сайты хотят подсчитать хиты. Вот почему используется HTTP 302, который является временным перенаправлением. Браузер спросит TinyUrl.com или bit.ly каждый раз снова, что позволяет подсчитывать хиты для вас (некоторые крошечные сервисы url предлагают это).
другие ответили, как работают перенаправления, но вы также должны знать, как они генерируют свои крошечные URL-адреса. Вы ошибочно услышите, что они создают хэш URL-адреса, чтобы сгенерировать этот уникальный код для сокращенного URL-адреса. Это неверно в большинстве случаев, они не используют алгоритм хэширования (где вы потенциально можете иметь коллизии).
большинство популярных сервисов сокращения URL-адресов просто берут идентификатор в базе данных URL-адреса, а затем преобразуют его в любую базу 36 [a-z0-9] (без учета регистра) или основание 62 (с учетом регистра).
упрощенный пример таблицы базы данных TinyURL:
ID URL VisitCount 1 www.google.com 26 2 www.stackoverflow.com 2048 3 www.reddit.com 64 ... 20103 www.digg.com 201 20104 www.4chan.com 20веб-фреймворки, которые позволяют гибкую маршрутизацию сделать обработку входящего URL-адреса очень легко (Ruby, ASP.NET MVC и др.).
Итак, на вашем веб-сервере у вас может быть действие маршрута, которое выглядит так (псевдокод):
Route: www.mytinyurl.com/{UrlID} Route Action: RouteURL(UrlID);который направляет любой входящий запрос на ваш сервер, который имеет любой текст после вашего домена www.mytinyurl.com к вашему связанному методу, RouteURL. Он предоставляет текст, который передается после прямой косой черты в вашем URL-адресе к этому методу.
Итак, допустим, вы просили: www.mytinyurl.com/fif
" fif " затем будет передан вашему методу, RouteURL(String UrlID). Затем RouteURL преобразует "fif" в его эквивалент base10, 20103, и запрос базы данных будет выполнен для перенаправления на любой URL-адрес, хранящийся под идентификатором 20103 (в этом случае, www.digg.com). вы также увеличили бы количество посещений для Digg по одному перед перенаправлением на правильный URL.
Это очень упрощенный пример, но вы должны быть в состоянии получить общее представление.
как расширение к @Salcedo ответ:
некоторые службы сокращения url (Tinyarro.ws) перейдите к крайности, используя Unicode (UTF-8) для кодирования символов в сокращенном url - адресе, что позволяет увеличить количество веб-сайтов, прежде чем добавлять дополнительный символ. Так как большинство UTF-8 принимается к использованию ((IRI) RFC 3987 обрабатывается большинством браузеров), что от ударов
62сайты на символ ~1,112,064.чтобы поставить в перспективе можно кодировать 1.2366863 e+12 сайтов с 2 символами (
1,112,064*1,112,064) - в ноябре 2009 года, сокращенные ссылки наbit.lyосуществлялась2.1миллиард раз (примерно в это время, bit.ly и TinyURL были наиболее широко используемыми услугами сокращения URL-адресов.), что в ~600 раз меньше, чем вы можете вместить всего 2 символа, поэтому для полного срока существования всех сервисов сокращения url он должен длиться еще минимум 20 лет до добавления третьего символа.
простыми словами, URL shortener отображает произвольную длинную последовательность символов (оригинальный, длинный дерьмовый url ) в короткую и гладкую последовательность символов. Это не что иное, как хэширование, которое чаще всего используется для создания таблиц поиска, хэш-карт, хэшей md5 для криптографических целей и т. д.
чтобы понять процесс сокращения URL-адресов, я создал демо-проект на GitHub, а также сообщение в блоге. Ссылка на это и дайте мне знать, если это было полезно.
Запись В Блоге : сокращение URL
Comments