URL短縮サービスはどのように機能しますか?[閉まっている]


87

アドレスバーからテキストを抽出して正しいURLにマッピングし、後でリダイレクトするなど、URL短縮サービスはどのように機能するのでしょうか。彼らはどのプログラミング言語を使用していますか?マッピングの履歴をどのように維持しますか?短縮URLの一意性をどのように保証しますか?素人がURLにアクセスせずにマップを解除するにはどうすればよいですか?


64
たった3票?さあ、彼は何かを学びたいのです、もっと早く閉じてください!!!
IAdapter 2011年

22
これは私が持っていた正確な質問でした、そして私はそれが閉じられているのを見て非常に失望しています。それは曖昧でも不完全でもありません-彼は彼が求めているものに非常に具体的です。
thumbtackthief 2013年

3
@bmargulies質問を閉じるべきではないと思います。これは非常に役に立ち、回答さえもありました。また、43の賛成票を考えて、閉じることにしました。なぜですか?
Amruth A 2016

回答:


38

ウィキはあなたの友達です

基本的に、bit.lyのように、短い名前のWebサイトがプレースホルダーとして使用されます。

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

彼らは実際には特定のプログラミング言語を使用していません。単純なURLリダイレクトを使用しているだけです。これは私が信じているHTMLで実行できます。


かっこいい。どうもありがとうございました
prap19 2011年

25
リダイレクトはHTMLでは行われず、HTTPヘッダーで行われます。(ステータスコード301または302、状況に応じて)。
Yahel 2011年

ああ、それはもっと理にかなっているでしょう。説明をありがとう。
ダニエルG.ウィルソン

リダイレクトするにはLocationヘッダーを使用している必要があります。
Jeevan Patil 2017

25

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

あなたはどんなプログラミング言語とデータストアでもそれをすることができます。コード生成は、一意性を確保するためにも簡単です。増分する主整数キーがある場合は、キーをbase62としてエンコードし、それを提供するだけです。コードは本質的にインクリメンタルであるため、競合が発生することはありません。


19

プロセスは実際には非常に単純です。URLを要求し、ランダムな文字列を生成し(そして、この文字列がまだ使用されていないことを確認し)、2つをある種のデータベースに配置するスクリプトがあります。URLをリクエストすると、別のスクリプトがデータベースでランダムな文字列を探し、見つかった場合はサイトにリダイレクトします。

もちろん、これは、悪用防止、URLフィルタリング、スパム防止、URL検証などの必要な機能のため、本番環境ではより複雑です。しかし、これらの実装は非常に簡単です。


言語は無関係であり、ほとんどの人がそうします。


9
「そして、この文字列がまだ使用されていないことを確認します」..どうやって?これが最大の質問です
Stewie 2014

3
@Stewie:SELECT * FROMマッピングWHEREkey = stringToCheck、および行が返されるかどうかを確認しますか?または、選択したデータベース言語の同様のもの。正直に言うと、問題全体の中で最も単純な部分のようです。
David Liu

@Stewieまたは、HashMapを使用してマップすることができます<key, url>
roottraveller 2017

@DavidLiu結果が出力されなくなるまで、クエリの再生成と発行を続ける必要はありませんか?データサイズが大きくなると、チェックする時間が長くなります。最悪のシナリオでは、DBへのクエリの数はn-1になります。ここで、nは「文字列」の数です。100Mの文字列があるとどうなりますか?
Stewie 2017年

@Stewieそれはまったく別の質問であり、ソリューション自体の原則に関する問題です。最終的には再生の問題が問題になることは間違いありませんが、「文字列がまだ使用されていないことを確認する」ことが解決策の簡単な部分であると私が言ったのはそのためです。置き換えなしでランダムに実行するための代替ソリューションはたくさんあります。
David Liu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.