Разделение и рекомбинация большой строки в файлах cookie с использованием ASP.NET - PullRequest
1 голос
/ 05 января 2011

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

Какую логику я должен использовать, чтобы разбить строку и затем объединить набор файлов cookie?

(Microsoft ADFS и, возможно, Siteminder делают эту технику, поэтому мне было бы интересно узнать, что это за реализация)

1 Ответ

1 голос
/ 05 января 2011

Cookies - это то, что обрабатывается браузерами, поэтому у каждого браузера есть свои ограничения.

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

Ограничения для каждого браузера на куки:
Internet Explorer обрабатывает максимальный размер файла cookie около 3904 байт
Максимальное количество файлов cookie, обработанных Mozilla Firefox, составляет около 3136 байт

Когда я провожу некоторые тесты в Chrome, Chrome падает с большим файлом cookie, и на странице не появляется никаких сообщений.

Теперь и в Netscape, и в Microsoft приняты меры, ограничивающие количество файлов cookie на основании ограничений RFC 2109, составляющих общее количество файлов cookie до 300 ref: http://www.cookiecentral.com/faq/#2.5
Это делается по многим причинам, одна из них - взлом, создание образа сайта, на котором вы загружаете полное видео о файлах cookie :) и заполняете им жесткий диск ...

Я говорю, что рекомендуется хранить небольшую ссылку на cookie в браузере и связывать ее с реальными данными на сервере. Чем меньше, тем лучше со всех сторон.

Как сделать ваши тесты на cookie, вы можете создать такой код.

if(Request.Cookies["cookieTest"] == null)
    Request.Cookies["cookieTest"].Value = "more text into cookie";
else
    Request.Cookies["cookieTest"].Value += "more text into cookie";

// check now the size
Responce.Write(Request.Cookies["cookieTest"].Value.Length);

Мой опыт показывает много случайных непредсказуемых проблем, когда вы пытаетесь использовать неконтролируемые большие данные в файлах cookie. Я много раз слышал, как служба поддержки говорит: Очистите свои куки и попробуйте снова:)

...