Здесь много вопросов о stackoverflow относительно сокращений URL-адресов, а также в других местах в Интернете, например
Как сократить URL-адрес URL-ключа? Как они работают?
http://www.codinghorror.com/blog/2007/08/url-shortening-hashes-in-practice.html
Однако есть одна вещь, которую я не понимаю. Например, http://goo.gl использует четыре символа на данный момент. Однако они заявляют, что их короткие URL-адреса не истекают. Как упоминалось в статье о ужасе кодирования, если они не могут перерабатывать URL-адреса, единственное возможное решение в какой-то момент добавляет дополнительный символ.
Хорошо, пока все хорошо. С 4 символами, что означает около 15 миллионов уникальных адресов. Что-то вроде Google Maps, я не думаю, что это очень много, и если вы не можете перерабатывать, я предполагаю, что они быстро исчерпали доступные адреса.
Теперь для части, которую я не получаю. При раздаче адресов у них заканчиваются неиспользуемые адреса. Они должны проверить, не был ли еще недавно выпущен новый адрес. Шанс, что это произошло, и адрес уже используется. Разумеется, прямое решение состоит в том, чтобы создавать новый URL снова и снова, пока они не находят бесплатную или пока не будут созданы все 1.5 миллиона альтернатив. Однако это, конечно, не может быть так, как они это делают, потому что это будет слишком трудоемким. Итак, как им это удается?
Кроме того, есть, вероятно, несколько посетителей сразу же запрашивают короткий URL-адрес, поэтому они должны иметь некоторую синхронизацию. Но как управлять ситуацией, когда нужно добавить пятый символ?
Наконец, при проведении некоторых исследований о том, как работают URL-адреса из http://goo.gl, я, конечно же, запросил короткий URL-адрес для карты на Google Maps несколько раз. Ни один из них никогда не будет использоваться. Однако, когда Google строго соблюдает политику URL-адресов, которые не истекают после выдачи, это означает, что в системе имеется множество и бездействующих URL-адресов. Опять же, я полагаю, что Google (и другие сервисы) также придумали решение этой проблемы. Я мог представить себе очистку, которая перерабатывает URL-адреса, которые не были посещены в первые 48 часов после создания или менее 10 раз в течение первой недели. Я надеюсь, что кто-то может пролить свет на этот вопрос.
Короче говоря, я получаю общий принцип сокращения URL-адресов, но я вижу несколько проблем, когда эти URL-адреса не могут истечь. Кто-нибудь знает, как проблемы, упомянутые выше, могут быть решены и есть ли другие проблемы?
ИЗМЕНИТЬ
Хорошо, поэтому это сообщение в блоге проливает свет на вещи. Эти службы не произвольно не генерируют ничего. Они полагаются на базовые функции автоматического прироста базы данных и применяют простое преобразование в результирующий идентификатор. Это устраняет необходимость проверки того, существует ли идентификатор (он этого не делает), и база данных обрабатывает синхронизацию. Это все еще оставляет без ответа один из моих трех вопросов. Как эти службы "знают", если ссылка действительно используется после создания?