2010-12-31 4 views
66

URL Shortenerは、アドレスバーからテキストを抽出して正しいURLにマップし、後でそれをリダイレクトする方法と同じように機能します。彼らはどんなプログラミング言語を使用していますか?彼らはどのようにマッピングの歴史を維持していますか?短縮URLの一意性をどのようにして保証しますか?どのようにレイ男性はURLを訪れることなくマップできますか?URL Shortenerはどのように機能しますか?

+51

3票が近いですか?さあ、彼は何かを学びたい、もっと速く閉じる! – IAdapter

+19

これは私が持っていた正確な質問でした。私はそれが閉じられていることを見て非常に残念です。あいまいでも不完全でもない - 彼は彼が求めていることに非常に特有です。 – thumbtackthief

+2

@bmargulies私は質問が閉じられてはならないと思う、これは非常に有用であって、答えも、43 upvotesを考え、あなたはそれを閉じたと決めた。 –

答えて

30

Wiki Is Your Friend

基本的には、短い名前のウェブサイトは、bit.ly.として、プレースホルダとして使用されています

次に、bit.lyは、ユーザーが提供するキーを生成します。このキーは、繰り返されないようにランダムに生成されます。 35文字のオプションと8個程度の値で、数学を行います。それは可能なキーの多くです。 URLが以前に存在していたキーと等しい場合は、キーを再利用する場所を読んで覚えています。

実際に特定のプログラミング言語を使用しているわけではありません。単純なURLリダイレクトを使用していますが、これはHTMLで実現できます。

+0

ああ、それはクールです。ありがとうございました – prap19

+16

リダイレクトはHTMLで行われません。HTTPヘッダーで行われます。 (状態コード301または302、依存する)。 – Yahel

+0

ああ大丈夫、それはもっと意味をなさないだろう。説明をありがとう。 –

18

実際には、URLを尋ねるスクリプトがあります。ランダムな文字列を生成し(この文字列がまだ使用されていないことを確認して)、何らかの種類のデータベースに入れます。あなたがURLを要求すると、別のスクリプトはデータベース内でランダムな文字列を探し、見つかった場合はサイトにリダイレクトします。

これはもちろん、不正使用防止、URLフィルタリング、スパム防止、URL検証などの必要な機能により、生産が複雑になります。しかし、これらは実装が非常に簡単です。


言語は無関係です。ほとんどの人が行います。

+7

"この文字列が既に使用されていないことを確認します" ..どのように?これは最大の質問です。 – Stewie

+3

@Stewie:SELECT * FROMマッピングWHERE key = stringToCheck、そして返された行があるかどうかを確認しますか?またはデータベース言語で類似のものを選択します。正直言って、問題全体の中で最も単純な部分のようだ。 –

+0

@Stewieまたは、__HashMap__を使用して '' – roottraveller

21

URLショートナーは、ショートコードを生成し、ターゲットURLをショートコードにマップし、新しいURLを提供するだけです。 URLを訪問すると、ショートコードをキーとしてデータベースルックアップが実行され、ターゲットURLにリダイレクトされます。短縮URLとリンク先URLの間にはアルゴリズム的な関連付けがないため、URL短縮システムのシステムを経由せずに「アンマップ」することはできません。

すべてのプログラミング言語とデータストアで実行できます。一意性を確保するためにコード生成は簡単です。あなたが増分する一次整数キーを持っていたなら、あなたは単にそのキーをbase62としてエンコードし、それを提供することができます。コードは事実上インクリメンタルであるため、競合することはありません。

+0

ねえ、ありがとう。それは簡潔で分かりやすいものでした。 – prap19

関連する問題