Насколько мне известно из результатов поиска Google, максимально допустимое количество файлов cookie очень сильно зависит от браузера, однако я не могу найти никаких последних данных о том, сколько файлов cookie разрешено в современных браузерах.
Мне нужно сохранить несколько большое количество пользовательских предпочтений в файлах cookie (для еще не зарегистрированных пользователей), так как лучше всего это сделать? (Кроме того, эти файлы cookie будут доступны как на стороне клиента javascript, так и на стороне сервера php)






Лучше всего вообще не хранить их в файлах cookie.
Сохраните их в базе данных и сохраните ключ БД в cookie. Если это всего лишь несколько настроек, безопасность не является большой проблемой.
Не забывайте, что файлы cookie будут отправляться с каждым запросом - если у вас есть 2 КБ данных cookie и вы загружаете 10 изображений на страницу, это дополнительные 22 КБ данных.
Вам нужно только вытащить их из базы данных для первого попадания, а затем поместить в сеанс.
IIRC, это 20 для общего большинства, больше для некоторых и 10 для одного конкретного браузера (опять же IIRC, IE5.5?). До 10 считается безопасным числом.
В любом случае вам не нужно больше одного - просто используйте один для хранения идентификатора на стороне клиента и сохраните все, что вам нужно, хранящееся на стороне сервера, с тем же идентификатором. Помимо всего прочего, чем меньше данных вы оставляете клиенту, тем меньше у него возможностей для удаления / повреждения / взлома и т. д.
Из RFC:
минимум 300 файлов cookie
не менее 4096 байт на файл cookie (измеряется размером символы, которые содержат нетерминальный файл cookie в синтаксисе описание заголовка Set-Cookie)
не менее 20 файлов cookie на каждый уникальный хост или доменное имя
Это минимальные требования. Команда IE6 этого не поняла. Все остальное сильно зависит от браузера. Вам лучше написать тестовую платформу для тестирования каждого браузера. Проверьте максимальный размер и количество небольшими пошаговыми инструкциями (и проверьте, читаемы ли они).
Кроме того, я, кажется, помню, что у apache есть проблема с огромным количеством файлов cookie. Не могу вспомнить, где я это видел.
Вот небольшой скрипт для тестирования файлов cookie: http://krijnhoetmer.nl/stuff/javascript/maximum-cookies/
Из этого RFC и того же раздела, процитированного выше, последний абзац гласит: «Приложения должны использовать как можно меньше и как можно меньше файлов cookie, и они должны корректно справляться с потерей файла cookie». Это может быть лучший совет, чем беспокоиться о нарушении ограничений пользовательского агента.
Когда вы говорите «20 файлов cookie на уникальный хост», вы имеете в виду 20 общих для субдоменов все или 20 на субдомен?
@Berzemus, Гоша, я хотел +1 к вышеупомянутому комментарию, но понял, что это написал я ... Означает ли ваше «20 файлов cookie на уникальный хост» 20 на субдомен или 20 всего?
Читая RFC, трудно быть уверенным, так как домены могут быть сопоставлены (a.b.com соответствует .b.com, но не b.com и т. д.). Не знаю, как это влияет на правило «20 файлов cookie на домен» и как разные браузеры реализуют это правило.
Я изучил это сегодня, если вы хотите поддерживать большинство браузеров, не превышайте 50 файлов cookie на домен и не превышайте 4095 байт на домен (т.е. общий размер всех файлов cookie <= 4095 байтов)
Чтобы узнать больше об этом, вот тестовая страница и результаты.
Количество файлов cookie:
Ограничения на размер cookie (4096 байт):
SRC: http://webdesign.about.com/od/cookies/f/cookies-per-domain-limit.htm и http://www.nczonline.net/blog/2008/05/17/browser-cookie-restrictions/
Не уверен, насколько это имеет смысл с их точки зрения, но Я видел сайты в дикой природе, которые устанавливали более 450 файлов cookie и отчеты более чем 140 отличительным сторонним доменам.
Они также хранятся в базе данных, однако мы предполагаем, что будет достаточно большое количество посетителей, поэтому я чувствую некоторую тошноту из-за обработки базы данных, скажем, от 20 до 50 значений при каждом запросе страницы. Файлы cookie снимут хотя бы часть нагрузки.