Какого размера куки я могу / должен создать? - PullRequest
6 голосов
/ 03 января 2012

Когда пользователи заходят на наш сайт, мы получаем объект из нашей базы данных, который содержит различные настройки, которые используются на всем сайте. Чтобы снизить нагрузку на сервер при возврате к нашей базе данных каждый раз, когда пользователь взаимодействует с нашим сайтом, мы стараемся придумать альтернативные способы. (Мы сериализуем и десериализуем объект, когда это необходимо). Объект, вероятно, будет <1MB, но может варьироваться. </p>

  1. Насколько большим может быть объект в сеансе без существенного влияния на производительность?
  2. Насколько большой объект мы можем сохранить в cookie?
  3. Существуют ли другие альтернативы (кроме получения данных из нашей БД)?

Ответы [ 2 ]

4 голосов
/ 03 января 2012

Максимально допустимый размер файла cookie зависит от клиента.Например, в статье MSDN от 2005 года говорится, что в целом файле cookie может быть доступно не менее 4096 байт (включая дату истечения срока действия и т. Д.). RFC , упомянутый в той же статье, содержит дополнительную информацию об ограничениях:

6.3 Пределы реализации

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

  • не менее 300 файлов cookie

  • не менее 4096 байт на файл cookie (измеряется размером символов, составляющих нетерминальный файл cookie в описании синтаксиса заголовка Set-Cookie)

  • не менее 20 файлов cookie на каждыйуникальное имя хоста или домена

Если данные вашего сеанса не являются ценными (например, «не должно быть потеряно в случае, например, перезагрузки»), попробуйте сохранить их в memcached,Это довольно быстро и позволяет избежать доступа к БД только для получения данных сеанса.Возможно, вы захотите использовать сочетание обоих: вы можете создать небольшой файл cookie, содержащий идентификатор сеанса и информацию для входа.Тогда потеря сеансов на стороне сервера не приведет к тому, что пользователи выйдут из системы, поэтому влияние будет довольно низким.

3 голосов
/ 03 января 2012

Альтернативой куки является локальное хранилище html5.Это не поддерживается старыми браузерами, но если это не имеет значения для вас, это хороший вариант для пользовательских настроек.Помните следующее:

1) Ограничение по умолчанию составляет 5 МБ на домен (я думаю)
2) Если вы храните данные типа настроек в локальном хранилище, вам все равно нужно синхронизироваться с серверомв противном случае изменение браузера приведет к отсутствию пользовательских настроек в новом браузере.

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