Ограничения на 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 тыс. доменов, следующего вида “www.dXXXXX.ru”, где вместо XXXXX - указывается порядковый номер домена. Затем, с помощью небольшого скрипта на JS, загруженного в браузере, я последовательно обошел все домены и установил максимально разрешенное количество куков. После чего, другим скриптом проверил какие куки были сохранены.
В итоге у меня получились следующие ограничения (еще раз обращаю внимание, что приведенные ниже цифры отражают максимальное количество куков, которое может запомнить браузер!) :
FireFox 3 - 3000 куков;
Opera 9 - 65535 куков;
InternetExplorer - неограниченное число куков (мне надоело проверять после того как были успешно установлено 150 тыс. куков).
Честно говоря, меня очень разочаровал показатель полученный в FireFox, ведь при установке 50 куков на один домен можно хранить информацию только от 60 сайтов, а это мало. С другой стороны, на практике даже скромного значения в 3000 куков оказывается вполне достаточно. Главное понимать для чего нужны куки и как их правильно использовать.
Полученные сведения, еще раз доказывают, что использовать куки нужно без фанатизма, так как у них существуют весьма значительные ограничения (особенно в FireFox).
Clique
Гость
Может быть кто-то помнит, в Netscape-их спецификациях было указано, что суммарное количество хранимых куков должно быть не менее 300.
Вы, наверное, имели ввиду «не более 300».
Evgeny Sergeev
Веб-разработчик, автор блога codeart.ru
Clique, нет, я имел в виду “не менее”. Обычно в спецификациях пишется о минимальных требованиях.
В википеди сказано так:
“Так, браузер должен хранить по меньшей мере 300 куки по 4096 байт каждая, и по меньшей мере 20 куки для одного сервера или домена”
Конечно, Вики не может быть истиной в последней инстанции. Но искать оригинал от Netscape как-то не очень хочется.
Алекс
Гость
По поводу так называемых Кукисов, то разные браузеры сильно отличаются в своей работе. И по количеству, и времени хранения и способу обработки. Некоторые возможности можно настраивать, но все равно подход у них разный. Надо изучать и подымать технический материал для каждого браузера.
Макс
Гость
Зачётное исследование. У себя на сайте думал хранить инфу об изменени мест в рейтингах игр именно в куки - потом начал замечать жёсткие глюки с сессиями в пшп (а там же номер сессии в куках и хранится). Долго искал проблему, пока по первой же ссылке не нашёл этот блог!
Ну буду думать по-другому теперь, как сделать.