Какой максимальный размер файла cookie, и сколько могут храниться в браузере для каждого сайта?

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

  • для каждого домена/веб-сайта, сколько куки могут быть отправлены в браузер, и какого размера?

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

5 ответов


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

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

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

Обсуждения

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

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

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


не более 50 cookies на домен, максимум 4 КБ на cookie (или даже 4 КБ в общей сложности, см. ответ Иэна). В IE 6 это было 20 cookies на домен.

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

Если вы хотите сохранить состояние на клиенте, и вы можно использовать 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.
  • веб-версии SQL: Chrome & Safari только, он никогда не будет делать это в других браузерах, потому что это было невозможно стандартизировать его.

Итак, как правило, для хранения клиента это зависит от варианта использования:

  • для отслеживания идентификатора сеанса или для нескольких КБ используйте cookies.
  • до 2 МБ, localstorage поставляет решение через все распространенные браузеры.
  • 2 МБ и выше, используйте IndexedDB (ищите хорошую библиотеку обертки).

Ограничения Размера Cookie

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

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

Cookies отправляются по каждому запросу домена, включая изображения. Для Аргументов, скажем, у вас есть 30 ресурсов на вашем веб-сайте и есть 4093 байта cookies. Это означает, что пользователь загружает 122Kb данных. Поэтому, если у меня есть соединение для загрузки 1Mbit, это займет не менее 1 секунды.

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


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

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

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


различные browswers имеют различные лимиты размера на печенье. Вот информация для IE. здесь - Это страница, на которой перечислены несколько браузеров.

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

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

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