2013-07-25 2 views
0

Мне нужно сохранить 400 номеров в файле cookie со стороны клиента. Каждый номер от от 1 до 10. Любые предложения, как организовать данные в файле cookie, чтобы сделать его компактным? (Я буду работать с куки с помощью Python на стороне сервера, и JavaScript на стороне клиента.)Сохраните большой массив чисел в файле cookie

+0

можете ли вы предоставить более подробную информацию о хранящихся цифрах? –

+0

Какой серверный язык вы используете? если php взглянуть: http://php.net/manual/en/function.setcookie.php для html5 вы также можете использовать localstorage –

+0

Имеет ли значение вопрос? – JAAulde

ответ

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/

0

Как насчет написания списка целых чисел, разделенных запятыми список, а затем сжимая список с помощью gzip (который будет генерировать двоичный вывод), а затем выдает двоичный вывод из gzip через кодер base-64, который будет генерировать текст, который может быть сохранен как файл cookie. Я бы предположил, что результат будет составлять всего около 100 байт, что может быть легко сохранено в файле cookie.

+0

Мне придется тратить время сервера на сжатие/разжатие для каждого запроса. – Graduate

1

OK, если вы хотите сделать это полностью на стороне клиента, то давайте попробуем другой подход. Для каждых трех целых чисел (от 1 до 10), которые вы хотите сохранить, будет 1000 комбинаций (10 * 10 * 10 = 1000). 12 бит дают вам 1024 комбинации (2^12 = 1024). Таким образом, вы можете хранить 3 целых числа (каждый 1-10), используя 12 бит. Таким образом, 400 целых чисел (каждый 1-10) можно сохранить с использованием 1600 бит (400/3 * 12). Логика для хранения целых чисел побитовым способом может быть легко реализована на стороне клиента с помощью javascript. 1600 бит = 200 байт (1 байт = 8 бит), поэтому вы можете хранить 400 целых чисел (каждый 1-10) с использованием 200 байт. Это двоичные данные, поэтому для хранения этой информации в файле cookie она должна быть преобразована в текст ascii. base64 - это один из способов сделать это, и это можно сделать на стороне клиента, используя функции в How can you encode a string to Base64 in JavaScript?. base64-кодирование генерирует 4 символа для каждого 3 байта, поэтому результирующая строка, которая будет храниться в файле cookie, будет иметь длину 267 символов (20 * 4/3). Все это можно сделать на стороне клиента в javascript, а 400 целых чисел (каждый 1-10) можно сохранить в файле cookie длиной 267 символов.

+0

Может ли что-нибудь преобразовать строку в Unicode? Эта ситуация все испортит. – Graduate

Смежные вопросы