0

我必须在客户端的 cookie 中保存 400 个数字。每个数字都是从1 到 10。任何建议如何组织 cookie 中的数据以使其紧凑?(我将在服务器端使用Python ,在客户端使用 JavaScript来处理 cookie 。)

4

3 回答 3

1

另一种解决方案是使用“localStorage”:

for(i=0; i <400; i++){
     localStorage[i] = Math.floor((Math.random()*10)+1);
}

console.log(localStorage);
alert(JSON.stringify(localStorage));

http://jsfiddle.net/S2uUn/

于 2013-07-26T00:12:17.867 回答
1

好的,如果您想完全在客户端执行此操作,那么让我们尝试另一种方法。对于您要存储的每三个整数(从 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 编码是一种方法,这可以在客户端使用以下函数完成如何在 JavaScript 中将字符串编码为 Base64?. base64 编码每 3 个字节编码产生 4 个字符,因此将存储在 cookie 中的结果字符串的长度为 267 个字符 (20 * 4 / 3)。整个事情可以在客户端的javascript中以这种方式完成,400个整数(每个1-10)可以存储在一个长度为267个字符的cookie中。

于 2013-07-26T01:18:06.187 回答
0

如何将整数列表写入逗号分隔的列表,然后使用 gzip 压缩列表(这将产生二进制输出),然后通过 base-64 编码器将 gzip 的二进制输出通过管道传输,这将产生可以存储的文本作为饼干。我猜想结果最终只有大约 100 字节大小,可以很容易地存储在 cookie 中。

于 2013-07-25T23:22:30.933 回答