1

私のスクリプトは、以下のような非常に長い URL を生成しています。これをアルゴリズムや手法でどのように短縮できるのでしょうか?

これは長い URL です: http://example.com/script.php?param1=value1¶m2=value2¶m3=value3¶m4=value4¶m5=value5

次のように短縮したい: http://example.com/script.php?p=430x2920

元のリンクをデータベースにキャッシュせずにこれを行うにはどうすればよいですか?

前もって感謝します。

4

7 に答える 7

1

値にpostを使用できます。しかし、URL内のすべての情報が本当に必要な場合は、URL書き換えの実装を開始する必要があると思いますこれが書き換えの開始です。

于 2009-05-01T14:00:14.150 に答える
1

データベースを使用して短縮(ハッシュ)URLのルックアップテーブルを保存したくない場合は、短縮URLを完全長のURLに変換するための何らかの関数を考案する必要があります。

つまり、フルレングスのURLには、短いURLに圧縮できるようなプロパティが必要です。

たとえば、次のURLを圧縮できます

http://example.com/script.php?param1=saffron&param2=sierra&param3=4

の中へ

http://example.com/script.php?p=p1.sa_p2.si_p3:4

param1とparam2は特定のキーワードのみを受け入れ、param3は数字のみを受け入れることを知っていた場合。

于 2009-05-01T14:01:44.847 に答える
1

いつでも区切り文字付きの単一のパラメーターを使用して、それをコードに分割して戻すことができます。

http://example.com/script.php?p=1x2x3x4x5

xまたは必要なものは、デリメータとして可能な値の一部ではありません。

于 2009-05-01T14:17:30.223 に答える
1

に静的な値を追加します$_SESSION[]

于 2009-05-01T13:45:02.110 に答える
0

可能な値の完全なセットを作成し、それらをエンコード/デコードするための双方向アルゴリズムを考え出します。

たとえば、3つのパラメーターがあり、それらが1桁の整数のみである場合、?param1 = 1&param2 = 2&param3 = 3の代わりに、?123を使用し、クエリ文字列を各文字で分割して各パラメーターを取得できます。

ただし、これがどの程度可能かは、期待している値の種類に完全に依存します。

于 2009-05-01T14:02:08.137 に答える
0
  • 一連のクエリ パラメータではなく、 RESTfulインターフェイスを使用します。

  • セッション Cookie をキーとして、サーバー上のセッション全体で保持される値を保存します。

于 2009-05-01T13:58:02.530 に答える