URL Shortener는 어떻게 작동합니까? [닫은]


88

주소 표시 줄에서 텍스트를 추출하여 올바른 URL에 매핑 한 다음 나중에 리디렉션하는 것과 같이 URL Shortener가 어떻게 작동하는지 궁금합니다. 그들은 어떤 프로그래밍 언어를 사용합니까? 매핑 기록을 어떻게 유지합니까? 단축 URL의 고유성을 어떻게 보장합니까? 일반인이 URL을 방문하지 않고 어떻게 매핑을 해제 할 수 있습니까?


66
단 3 표만? 어서, 그는 무언가를 배우고 싶어합니다. 더 빨리 닫으세요 !!!
IAdapter

23
이것은 내가 가진 정확한 질문이었고 그것이 닫혔다는 사실에 매우 실망했습니다. 모호하거나 불완전하지 않습니다. 그는 그가 요구하는 것에 대해 매우 구체적입니다.
thumbtackthief

3
@bmargulies 나는 질문이 닫혀서는 안된다고 생각합니다. 이것은 매우 도움이되었고 심지어 답변이었고, 43 개의 찬성 투표를 생각했고 당신은 그것을 닫기로 결정했습니다 .. 왜 ??
Amruth

답변:


40

위키는 당신의 친구입니다

기본적으로 이름이 짧은 웹 사이트는 bit.ly와 같은 자리 표시 자로 사용됩니다.

그런 다음 bit.ly는 사용자가 제공 할 키를 생성하며, 이는 반복되지 않도록 무작위로 생성됩니다. 35 개의 문자 옵션과 8 개 정도의 값으로 수학을 수행하십시오. 가능한 많은 키입니다. URL이 이전의 기존 키와 같으면 키를 재사용한다는 내용을 읽은 것을 기억합니다.

그들은 실제로 특정 프로그래밍 언어를 사용하지 않고 단순한 URL 리디렉션을 사용합니다. HTML로 수행 할 수 있습니다.


오 멋지네요. 대단히 감사합니다
prap19

25
리디렉션은 HTML로 수행되지 않고 HTTP 헤더로 수행됩니다. (상태 코드 301 또는 302에 따라 다름).
Yahel

아, 그게 더 말이 되겠네요. 설명해 주셔서 감사합니다.
Daniel G. Wilson

리디렉션하려면 Location 헤더를 사용해야합니다.
Jeevan Patil

26

URL 단축기는 단축 코드를 생성하고 대상 URL을 단축 코드에 매핑 한 다음 새 URL을 제공하기 만하면됩니다. URL을 방문하면 단축 코드를 키로 사용하여 데이터베이스 조회를 수행하고 대상 URL로 리디렉션합니다. 단축 URL과 도착 URL 사이에는 알고리즘 연결이 없으므로 URL 단축기의 시스템을 거치지 않고 "매핑 해제"할 수 없습니다.

모든 프로그래밍 언어 및 데이터 저장소를 사용하여 수행 할 수 있습니다. 코드 생성은 고유성을 보장하기 위해 간단합니다. 증가하는 기본 정수 키가있는 경우 키를 base62로 인코딩하여 제공 할 수 있습니다. 코드는 본질적으로 점진적이므로 충돌이 발생하지 않습니다.


19

프로세스는 실제로 매우 간단합니다. URL을 요청하고 임의의 문자열을 생성하고 (그리고이 문자열이 이미 사용되지 않았는지 확인하는) 두 가지를 일종의 데이터베이스에 넣는 스크립트가 있습니다. URL을 요청하면 다른 스크립트가 데이터베이스에서 임의의 문자열을 찾고 발견되면 사이트로 리디렉션됩니다.

이것은 물론 남용 방지, URL 필터링, 스팸 방지, URL 확인 등과 같은 필요한 기능으로 인해 프로덕션에서 더 복잡합니다. 그러나 구현하기는 매우 간단합니다.


언어는 무관하며 대부분은 누구나 할 수 있습니다.


9
"그리고이 문자열이 이미 사용되지 않았는지 확인합니다".. 어떻게? 이것이 가장 큰 질문입니다
Stewie

4
@Stewie : SELECT * FROM 매핑 WHERE key = stringToCheck, 반환 된 행이 있는지 확인? 또는 선택한 데이터베이스 언어로 비슷한 것. 솔직히 말해서 전체 문제의 가장 단순한 부분 인 것 같습니다.
David Liu

@Stewie 또는 그들은 사용할 수 의 HashMap를 매핑<key, url>
roottraveller

@DavidLiu 결과가 출력되지 않을 때까지 쿼리를 계속 재생성하고 발행 할 필요가 없습니까? 데이터 크기가 커짐에 따라 확인 시간도 늘어납니다. 최악의 경우, DB에 대한 쿼리 수는 n-1이됩니다. 여기서 n은 "문자열"수입니다. 100M 문자열이 있으면 어떻게됩니까?
스튜

@Stewie 그것은 완전히 다른 질문입니다. 솔루션 자체의 원리에 대한 문제입니다. 재생성 문제가 결국 문제가 될 것이라는 말은 맞습니다.하지만 다시 말해서 "현이 아직 사용되지 않았는지 확인하는 것"이 ​​해결책의 쉬운 부분이라고 말한 이유입니다. 대체하지 않고 무작위로 수행 할 수있는 대체 솔루션이 많이 있습니다.
David Liu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.