// codeart.ru / Статьи / Ограничения на Cookie

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

Автор: Evgeny Sergeev

Давно хотел разобраться с тем какие ограничения накладывают браузеры на хранение куков (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 тыс. доменов, следующего вида “www.dXXXXX.ru”, где вместо XXXXX - указывается порядковый номер домена. Затем, с помощью небольшого скрипта на JS, загруженного в браузере, я последовательно обошел все домены и установил максимально разрешенное количество куков. После чего, другим скриптом проверил какие куки были сохранены.

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

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

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

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

  1. Может быть кто-то помнит, в Netscape-их спецификациях было указано, что суммарное количество хранимых куков должно быть не менее 300.

    Вы, наверное, имели ввиду «не более 300».

  2. Clique, нет, я имел в виду “не менее”. Обычно в спецификациях пишется о минимальных требованиях.

    В википеди сказано так:
    “Так, браузер должен хранить по меньшей мере 300 куки по 4096 байт каждая, и по меньшей мере 20 куки для одного сервера или домена”

    Конечно, Вики не может быть истиной в последней инстанции. Но искать оригинал от Netscape как-то не очень хочется. :-)

  3. По поводу так называемых Кукисов, то разные браузеры сильно отличаются в своей работе. И по количеству, и времени хранения и способу обработки. Некоторые возможности можно настраивать, но все равно подход у них разный. Надо изучать и подымать технический материал для каждого браузера.

  4. Зачётное исследование. У себя на сайте думал хранить инфу об изменени мест в рейтингах игр именно в куки - потом начал замечать жёсткие глюки с сессиями в пшп (а там же номер сессии в куках и хранится). Долго искал проблему, пока по первой же ссылке не нашёл этот блог!

    Ну буду думать по-другому теперь, как сделать.

Leave a Reply

« Что-то странное творится с моим WordPress-ом Подводные камни JavaScript или опасное свойство Semicolon insertion. »