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

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

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

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

43
задан Jeff Atwood 19 January 2010 в 17:06
поделиться

4 ответа

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

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

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

Дизайн обсуждения

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

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

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

14
ответ дан 26 November 2019 в 22:42
поделиться

PWSTR = указатель на широкую последовательность = WCHAR * в окнах

Windows SDK очень зависает на типах для типов и указателей на типы.

«When in Rome» - используйте любой строковый тип, который требуется для проекта. Типы последовательностей недостаточно важны, чтобы подчеркнуть или попытаться принудить ваш один истинный путь к тому, что используется.

-121--3879793-

PWSTR - идентификатор из < windows.h > . Она лучше всего используется при работе с функцией Windows API, которая требует такой функции, и лучше всего избегать ее в противном случае.

-121--3879796-

Не более 50 файлов cookie на домен, максимум 4 КБ на файл cookie (или даже 4 КБ в целом, см. Ответ Иаина ). На IE 6 раньше было 20 куки на домен.

Обычно рекомендуется сохранять состояние на сервере и использовать файлы 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 МБ обеспечивает решение для всех распространенных браузеров.
  • 2 МБ и выше, используйте IndexedDB (ищите хорошую библиотеку оболочек).
49
ответ дан 26 November 2019 в 22:42
поделиться

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

3
ответ дан 26 November 2019 в 22:42
поделиться

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

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

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

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

4
ответ дан 26 November 2019 в 22:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: