クライアント側の Cookie に 400 個の数字を保存する必要があります。すべての数字は1 から 10 までです。Cookie 内のデータを整理してコンパクトにする方法について何か提案はありますか? (サーバー側ではPythonを使用し、クライアント側ではJavaScriptを使用して Cookie を処理します。)
3 に答える
もう 1 つの解決策は、「localStorage」を使用することです。
for(i=0; i <400; i++){
localStorage[i] = Math.floor((Math.random()*10)+1);
}
console.log(localStorage);
alert(JSON.stringify(localStorage));
OK、これを完全にクライアント側で行いたい場合は、別のアプローチを試してみましょう。保存する 3 つの整数 (1 から 10 まで) ごとに、1000 の組み合わせ (10*10*10=1000) があります。12 ビットで 1024 の組み合わせ (2^12=1024) が得られます。したがって、12 ビットを使用して 3 つの整数 (それぞれ 1 ~ 10) を格納できます。したがって、1600 ビット (400 / 3 * 12) を使用して 400 個の整数 (それぞれ 1 ~ 10) を格納できます。このように整数をビットごとに格納するためのロジックは、javascript を使用してクライアント側で簡単に実装できます。1600 ビット = 200 バイト (1 バイト = 8 ビット) であるため、200 バイトを使用して 400 個の整数 (それぞれ 1 ~ 10) を格納できます。これはバイナリ データであるため、この情報を Cookie に保存するには、ASCII テキストに変換する必要があります。base64エンコーディングはそれを行う1つの方法であり、これは次の関数を使用してクライアント側で行うことができますJavaScriptで文字列をBase64にエンコードするにはどうすればよいですか? . base64 エンコードでは、エンコードされた 3 バイトごとに 4 文字が生成されるため、Cookie に格納される結果の文字列の長さは 267 文字 (20 * 4 / 3) になります。クライアント側で JavaScript を使用してすべてをこの方法で行うことができ、400 個の整数 (それぞれ 1 ~ 10) を長さ 267 文字の Cookie に格納できます。
整数のリストをカンマ区切りのリストに書き込んでから、gzip を使用してリストを圧縮し (バイナリ出力を生成します)、gzip からのバイナリ出力を base-64 エンコーダーにパイプします。これにより、保存可能なテキストが生成されます。クッキーとして。結果は約 100 バイトのサイズになり、Cookie に簡単に保存できると思います。