Какой максимальный размер файла 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, в основном используется для идентификации пользователя / сеанса, так что больше данных могут быть получены из базы данных или другого локального ресурса на веб-сервере.