IE cookie причуды - PullRequest
       11

IE cookie причуды

1 голос
/ 13 марта 2009

Мы столкнулись с проблемой, когда следующая проверка периодически прерывается в IE:

псевдокод:

setCookie("name","value", "1d");
if(getCookie("name") === "value"){ 
  return SUCCESS;
} else {
  return FAILURE;
}

эта небольшая процедура проверяет, включены ли у пользователя файлы cookie. это не должно потерпеть неудачу, но это делает. потому что IE может обрабатывать только определенное количество файлов cookie? (мы установили много печенья).

есть ли другой способ сделать проверку файлов cookie более надежным?

Ответы [ 3 ]

2 голосов
/ 13 марта 2009

Да, IE имеет предустановленный лимит cookie для каждого хоста. После этого программа начинает отбрасывать куки. Проверьте здесь для получения дополнительной информации ...

Я бы порекомендовал вам использовать cookie-файлы только для отслеживания идентификатора пользователя, для всего остального вы должны использовать что-то вроде "Session State".

1 голос
/ 13 марта 2009

это потому, что IE может обрабатывать только определенное количество файлов cookie?

Может быть, но этот предел довольно высок - намного больше, чем вы должны устанавливать на практике. Не помещайте большие объемы данных в куки; они отправляются при каждом HTTP-запросе, замедляя работу вашего приложения. В IE вы можете хранить большие объемы данных в userData , а в более новых браузерах вы можете использовать DOM Storage , в любом случае без издержек HTTP. Но полагаться на это не блестяще для совместимости. Вы действительно должны хранить это на стороне клиента? Для веб-приложения общего назначения это может быть признаком того, что вы делаете это неправильно.

Есть ли другой способ сделать проверку файлов cookie более надежным?

Нет, вот и все. Обратите внимание, что вы можете не установить дату cookie с датой истечения срока действия, но вам удастся установить файл cookie сеанса (без даты истечения срока действия; истекает при закрытии браузера). Это связано с тем, что в IE при блокировке постоянных файлов cookie они полностью блокируются, а не понижаются до файлов cookie сеанса, как в некоторых других браузерах. Поэтому для некоторых целей вам понадобятся две проверки.

1 голос
/ 13 марта 2009

Как сказал bastos.sergio, используйте сессию.

Тем не менее, если у вас веб-серверы с балансировкой нагрузки, игнорируйте сеанс и извлекайте данные прямо с сервера базы данных, когда вам это нужно.

Если это один веб-сервер, используйте сеанс.

В любом случае, посмотрите на данные, которые вы храните. ВСЕ куки для домена отправляются обратно на каждый веб-запрос. Все данные сеанса также загружаются для каждого веб-запроса.

Если вам не нужны данные для каждой веб-страницы, вам не следует кэшировать их в файлах cookie или в сеансе, так как это на самом деле приводит к большему снижению производительности, чем простое извлечение, когда это необходимо.

Вот почему единственными вещами, которые обычно хранятся в файлах cookie или сеансах, являются простые элементы, такие как идентификатор пользователя.

Кроме того, я полагаю, что IE ограничивает сайт 20 отдельными файлами cookie, что в общей сложности составляет 4 КБ данных.
Смотри http://support.microsoft.com/kb/306070

ОБНОВЛЕНИЕ : поцарапать ограничение 20. IE 5,6 и 7 поддерживают до 50 файлов cookie при условии применения определенного обновления с августа 2007 года. http://support.microsoft.com/kb/941495 Однако ограничение в 4 КБ по-прежнему накладывается.

И посмотрите эту запись в блоге , которая точно описывает, почему большие объемы файлов cookie являются плохой идеей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...