まず、ちょっとした文脈:
私は自分のサーバーに URL 短縮を実装しようとしています (問題がある場合は C で)。目的は、短縮された URL からコンテキストを復元できるようにしながら、長い URL を避けることです。
現在、特定の ID で識別されるサーバー上にセッションを作成する実装があります。これは機能しますが、サーバーのメモリを消費します (リソースが限られている組み込みサーバーであり、デバイスの主な目的は Web ページを提供することではなく、他のクールなことを行うことであるため、望ましくありません)。
もう 1 つのオプションは、CookieまたはHTML5 Web ストレージを使用してセッション情報をクライアントに保存することです。
しかし、私が探しているのは、短縮された URL パラメーターを1 つのパラメーターに格納して、URL に添付し、そのパラメーターから元のパラメーターを再構築できる可能性です。
最初に考えられたのは、Base64 エンコードを使用してすべてのパラメーターを 1 つにまとめることでしたが、これはさらに大きな URL を生成します。
現在、URL パラメーターを圧縮し ( zip、bz2などの圧縮アルゴリズムを使用)、その圧縮されたバイナリ BLOB で Base64 エンコードを行い、その情報をコンテキストとして使用することを考えています。パラメータを取得したら、Base64 デコードを実行し、結果を圧縮解除して、元の URL を取得できます。
問題は、URL パラメータの大きなリストを1 つの小さなリストに可逆圧縮するために使用できる、見落としている他の可能性はありますか?
更新: home
からのコメントの後、圧縮自体が圧縮データにいくらかのオーバーヘッドを追加し、圧縮データが元のデータよりもさらに大きくなることを見落としていることに気付きました。
そのため(ホームが彼のコメントで述べているように)、URLパラメーターのリスト全体を圧縮することは、パラメーターが特定の長さを超えている場合にのみ実際に役立つと考え始めています。そうしないと、以前よりもさらに大きなURLになる可能性があるためです.