Хранение большого количества информации в куки - PullRequest
1 голос
/ 02 сентября 2011

Я работаю над демо-инструментом (PHP, jQuery, XHTML), пока что все хорошо, за исключением того, что у меня есть проблема, мне нужно временно сохранить определенную информацию, и я делаю это через куки, однако куки 'ограничение в Apache составляет 4 КБ, и у меня больше нет места в файле cookie, поэтому мне интересно, как я могу без проблем сохранять внутри файла cookie, если я по-прежнему не хочу отправлять какую-либо информацию в базы данных или текстовые файлы.

Я не знаю, возможно, используя путь или другой домен, я смогу разобраться.

Я был бы очень признателен за любую помощь, которую вы можете оказать мне:).

Ответы [ 4 ]

2 голосов
/ 02 сентября 2011

Сессии похожи на Cookies, но они просто дают клиенту уникальный идентификатор («идентификатор сессии») и сохраняют остальные данные на сервере.

Конечно, это хранится в базе данных или файле, но это абсолютно прозрачно для вас, нет никаких проблем с запросами SQL, чтениями файлов или чем-то еще.

Вам просто нужно заменить все $_COOKIE на $_SESSION и поставить session_start(); в верхней части кода: http://www.tizag.com/phpT/phpsessions.php

Один недостаток: PHP устанавливает все сеансовые куки-файлы без тайм-аута, который браузер обычно рассматривает как «удаляйте этот куки-файл всякий раз, когда браузер закрыт». Смотрите этот вопрос для обходных путей: Как мне истечь сеанс PHP через 30 минут?

1 голос
/ 02 сентября 2011

Во-первых, вы должны подумать, действительно ли необходимо сохранить такое количество данных в cookie. Может быть, вы можете сжать вашу информацию или вам просто не нужно все это?

Причина в том, что куки отправляются при каждом запросе к серверу (это может быть больше 1). Если вы обслуживаете изображения из одного домена, вы можете получить более 20 запросов, каждый из которых отправляет этот большой файл cookie. Предполагая, что ваш файл cookie содержит 5 КБ данных, у вас есть 100 КБ, чтобы просто перебрать вашу информацию.

см .: http://developer.yahoo.com/performance/rules.html#cookie_size

если вам нужна информация только для текущего сеанса, почему бы не сохранить ее в сеансе var (или в memcache и т. П.)? Может быть, все в порядке, если вы просто сохраняете идентификатор в файле cookie и если в вашем сеансе нет этого идентификатора, вы загружаете его из базы данных и сохраняете в сеансе. так что у вас есть одноразовый доступ к сеансу.

Возможно, будет лучше, если вы предоставите дополнительную справочную информацию.

0 голосов
/ 02 сентября 2011

Полагаю, вы можете хранить неконфиденциальную информацию с элементом DOM. Если вы используете jQuery, вы можете использовать .data () - http://api.jquery.com/data/

Однако после полной перезагрузки страницы она исчезла.

0 голосов
/ 02 сентября 2011

Вы можете создать несколько файлов cookie, но это плохая идея.Файлы cookie будут передаваться по проводам при каждом запросе.Подумайте о том, чтобы поместить информацию о сеансе в базу данных или на уровень кэша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...