Ограничения на Cookie

Давно хотел разобраться с тем какие ограничения накладывают браузеры на хранение куков (cookie). Сегодня смог выкроить на это время и провести несколько простых тестов. Так как на полноту эксперимента я не претендую, то для исследования взял только три браузера — Opera 9, FireFox 3, InternetExplorer 8. Далее о том, какие результаты получены.


Для начала я прошелся по стандартным вещам — максимальный суммарный размер данных для всех куков на один домен и их общее количество.

В плане размера все браузеры показали примерно одинаковые результаты — 4096 симовлов (это включая знак равенства и имя самой куки). Что касается количества, то тут результаты разные:

  •  FireFox 3 — 50 куков на домен;
  •  Opera 9 — 30 куков на домен;
  •  InternetExplorer — 50 куков на домен. (напомню, что в IE6 можно было хранить не более 20 куков на домен)



Затем, мне стало интересно, а что будет если количество куков, полученных от сервера, превысит указанные ограничения. Логично предположить, что в таком случае браузер удалит самую старую куку и добавит одну из новых. Данное предположение оказалось истинным только для IE8 и Opera 9, а вот FireFox повел себя странным образом начав удалять куки в произвольном порядке.

Последний вопрос, который меня интересовал заключается в следующем: существует ли ограничение на общее количество хранимых куков. Фактически я хотел определить сколько различных сайтов можно посетить не боясь, что часть куков будет потеряна. Может быть кто-то помнит, в Netscape-их спецификациях было указано, что суммарное количество хранимых куков должно быть не менее 300.

Прежде чем я приведу результаты проверки, пара слов о том как я ее проводил. Для имитации большого числа различных доменов, я внес в файл хостов (hosts) порядка 30 тыс. доменов, следующего вида «dXXXXX.ru», где вместо XXXXX — указывается порядковый номер домена. Затем, с помощью небольшого скрипта на JS, загруженного в браузере, я последовательно обошел все домены и установил максимально разрешенное количество куков. После чего, другим скриптом проверил какие куки были сохранены.

В итоге у меня получились следующие ограничения (еще раз обращаю внимание, что приведенные ниже цифры отражают максимальное количество куков, которое может запомнить браузер!):

  • FireFox 3 — 3000 куков;
  • Opera 9 — 65535 куков;
  • InternetExplorer — неограниченное число куков (мне надоело проверять после того как были успешно установлено 150 тыс. куков).



Честно говоря, меня очень разочаровал показатель полученный в FireFox, ведь при установке 50 куков на один домен можно хранить информацию только от 60 сайтов, а это мало. С другой стороны, на практике даже скромного значения в 3000 куков оказывается вполне достаточно. Главное понимать для чего нужны куки и как их правильно использовать.

Полученные сведения, еще раз доказывают, что использовать куки нужно без фанатизма, так как у них существуют весьма значительные ограничения (особенно в FireFox).