Каков максимальный размер файла cookie и сколько их можно хранить в браузере для каждого веб-сайта? - PullRequest
42 голосов
/ 18 января 2010

Я узнаю о файлах cookie и меня интересует поддержка браузера при написании веб-приложений, использующих файлы cookie для хранения состояния.

  • Сколько файлов cookie может содержать каждый доменбыть отправлены в браузер и какого размера?

  • Если отправлено и сохранено несколько файлов cookie, влияет ли это на производительность?

Ответы [ 9 ]

49 голосов
/ 19 января 2010

Не более 50 файлов cookie на домен, максимум 4 КБ на файл cookie (или даже всего 4 КБ, см. ответ Iain ).В IE 6 для каждого домена использовалось 20 файлов cookie.

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

Если вы хотите сохранить состояние на клиенте, и вы можете использовать JavaScript для этогоесть варианты.Используйте различные API хранилища напрямую или найдите библиотеку-оболочку, которая абстрагирует детали.

Варианты хранилища на стороне клиента:

  • localStorage : Firefox 2+,Chrome 4+, Safari 4+, Internet Explorer 8+.5 МБ на домен без подтверждения пользователя (но учтите, что он хранится в формате UTF-16, поэтому вы можете использовать два байта на символ).
  • IndexedDB : Firefox 4+, Chrome 11+, Safari 10+, Internet Explorer 10+.5 МБ на домен без подтверждения пользователя, гораздо больше после подтверждения (в большей степени зависит от браузера, проверьте сведения о вашем браузере).

Устаревшие варианты хранения:

  • Постоянное хранилище Flash 8: любой браузер с Flash 8+.100 КБ, больше с разрешения пользователя.Устаревший, поскольку Flash сам по себе устарел.
  • userData : Internet Explorer 5.5+.64 КБ на домен в зоне ограниченного доступа, 128 КБ на домен в зоне Интернета.Заменяется на localStorage.
  • Web SQL : только для Chrome и Safari, он никогда не попадет в другие браузеры, поскольку невозможно было его стандартизировать .

Таким образом, обычно для хранилища на стороне клиента это зависит от варианта использования:

  • Для отслеживания идентификатора сеанса или для нескольких КБ используйте файлы cookie.
  • Наверхдо 2 МБ, localstorage предоставляет решение для всех распространенных браузеров.
  • 2 МБ и более, используйте IndexedDB (ищите хорошую библиотеку-обертку).
24 голосов
/ 06 августа 2011

Ограничения на размер печенья

Если вы хотите поддерживать большинство браузеров, то не превышайте 50 файлов cookie на домен и 4093 байта на домен . То есть размер всех файлов cookie не должен превышать 4093 байта.

Производительность Мысли

Файлы cookie отправляются при каждом запросе домена, включая изображения. Для примера давайте предположим, что у вас есть 30 ресурсов на вашем сайте, и у вас 4093 байта куки. Это означает, что пользователь загружает 122Kb данных. Так что, если у меня есть соединение для загрузки 1 Мбит, это займет не менее 1 секунды.

Если вы хотите посмотреть созданную мной тестовую страницу cookie или узнать о ней подробнее, ознакомьтесь с Ограничения cookie браузера .

14 голосов
/ 18 января 2010

Во-первых, я предлагаю вам не беспокоиться об этой проблеме. Существует достаточно места для сериализации тонн идентификаторов.

Во-вторых, он хранится не web-server, а web-domain - например, www.google.com, а не сотнями разных физических серверов, обслуживающих домен Google.

В-третьих, если вам нужно беспокоиться, знайте, что существует два возможных заголовка файла cookie . Размеры этих заголовков cookie определяются пределами программного обеспечения браузера.

Обсуждение дизайна

Для чего вы не хотите использовать заголовок файла cookie, это отправка сведений о сеансе клиента. Например, не пытайтесь вставить сообщение электронной почты, которое клиент вводит в файл cookie, если вы создаете интерфейс электронной почты. Вместо этого вы бы отправили клиенту cookie-файл, который представляет его личность + сеанс: вы сохраняете все данные сеансов в соответствии с этим идентификатором. Вы можете хранить десятки идентификаторов (4–16 байт) на каждый заголовок cookie, и никому не нужно больше, чем, скажем, 4 из них. Данные cookie (в виде целого числа) имеют тенденцию кодироваться в base64 , что увеличивает количество байтов.

Производительность

Ваш браузер отправляет множество заголовков на веб-сервер. Файл cookie - это просто еще 100-1000 байт (в основном ближе к 100). В обоих случаях отправка этих данных на веб-сервер занимает лишь небольшую часть времени, если, конечно, они попадают в контекст. Следует помнить, что сеть построена на текстовых протоколах.

5 голосов
/ 26 марта 2011

Если вас беспокоит снижение производительности из-за больших файлов cookie, отправляемых при каждом запросе к серверу, хорошей идеей может быть размещение всех ваших статических файлов (изображений, CSS и т. Д.) В поддомене вашего сайта, например http://static.yourdomain.com.

Таким образом, когда ваш сайт на www.yourdomain.com запрашивает статический файл, например изображение, браузер больше не отправляет cookie вместе с HTTP-запросом.

Источник: http://developer.yahoo.com/performance/rules.html#cookie_free

4 голосов
/ 18 января 2010

Разные браузеры имеют разные ограничения на размер файлов cookie. Вот информация для IE . Здесь - это страница с несколькими браузерами.

Файлы cookie сохраняются не на сервере, а на домене (на сервере может размещаться много доменов или наоборот, ферма серверов может обслуживать один домен).

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

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

3 голосов
/ 18 июня 2014

4096 байт Однако настоящая проблема возникает, когда вы пытаетесь установить файлы cookie большого размера. Согласно стандартам, браузер должен поддерживать не менее 4096 байт на файл cookie. IE6 не делает этого. Вместо этого максимальный размер всех файлов cookie домена составляет 4096 байт.

3 голосов
/ 18 января 2010

Если вы программируете веб-сайт, рекомендуется не хранить слишком много файлов cookie, поскольку этот файл cookie отправляется на сервер каждый раз, когда пользователь запрашивает страницу на вашем сайте.Гораздо лучшим решением будет просто сохранить уникальный идентификатор в файле cookie и позволить серверу получить необходимую информацию из базы данных или хранилища файлов на основе этого уникального идентификатора.К сожалению, это решение приводит к тому, что люди беспокоятся о том, что вы отслеживаете о них, поэтому вам может потребоваться, чтобы где-то на вашем сайте была выражена «политика использования файлов cookie», в которой говорилось о том, почему вы размещаете файлы cookie в их браузере, а также о том, что вы делаете и что делаете.отследить о них.

0 голосов
/ 16 мая 2017

CDN приходит на помощь.

Вы можете выгружать статический контент в CDN или службу хранения файлов, такую ​​как Amazon S3, хранить запросы статических файлов без файлов cookie легко, если вы не настроили запись CNAME на поддомене, который получает файлы cookie. с вашего домена верхнего уровня.

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

0 голосов
/ 27 февраля 2015

Вот действительно хороший сайт, посвященный ограничениям файлов cookie и позволяющий протестировать ваш браузер:

http://browsercookielimits.squawky.net/

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