Проверка / чтение / запись файлов cookie в .NET, пожалуйста, помогите мне понять - PullRequest
6 голосов
/ 13 января 2010

Так что раньше мне никогда не приходилось использовать куки, но сейчас я делаю Корзину покупок, в которую они могут возвращаться и уходить, но я хочу, чтобы она сохраняла то, что они добавили.

Что мне интересно:

Как проверить, существует ли файл cookie, а затем создать или обновить его, это лучший способ подумать об использовании файла cookie?

Как именно я буду хранить данные, в частности, я хочу сохранить список идентификаторов, таких как "5,6,7,8", должен ли я использовать одну строку для этого или есть более быстрый / лучший способ, чем чтение / разбирать / писать что-то подобное? Я имею в виду, я полагаю, я бы просто продолжал добавлять new_value + ',' в конец, есть ли добавление для переменных cookie?

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

Примечание. Легко найти «КАК», чтобы увидеть синтаксис, но я действительно пытаюсь понять «ЛУЧШИЙ СПОСОБ» или самый идеальный способ его использования или то, как все, что вы нашли программисты, самый плодотворный способ использовать их в этом сценарии.

Ответы [ 3 ]

1 голос
/ 13 января 2010

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

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

Хранение корзины покупок в cookie означает, что у вас не будет записи о том, за что люди покупали, но не покупали.

OTOH, использование куки - это использование хранилища покупателя и сохранение вашего собственного. Это может быть значительным с течением времени и много покупателей.

0 голосов
/ 13 января 2010

Я хочу дополнительно объяснить , почему вы сохраняете только cookie, привязанный к идентификатору пользователя в cookie. Есть две основные причины:

  • Производительность. Как бы медленно вы ни извлекали данные из базы данных, вы должны помнить, что данные cookie не бесплатны. Он должен быть загружен из браузера пользователя на ваш веб-сервер, и даже высокоскоростные широкополосные соединения имеют тенденцию к гораздо более низкой скорости загрузки. Напротив, ваша база данных, скорее всего, имеет гигабитную ссылку (иногда даже быстрее) непосредственно на веб-сервер. Итак, что вы действительно хотите в своем файле cookie для лучшей производительности - это руководство, которое отображается непосредственно на первичный ключ вашей таблицы базы данных.
  • Security. Данные в файлах cookie хранятся в виде простого текстового файла на компьютере пользователя. Вы никогда не знаете, откуда пользователь получит доступ к вашему сайту; это может быть очень публичное место, в котором нельзя хранить такие данные.

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

0 голосов
/ 13 января 2010

Я решил эту проблему в прошлом, создав класс для управления файлами cookie (например, CookieManager) статическими методами, которым я передал объект HttpRequest.

Я пытался решить очень похожую проблему, поэтому я создал cookie-файл Count, а затем cookie-файл, в котором хранилась информация, которую я хотел сохранить (в вашем случае идентификационный номер). Я хотел сохранить только последние 5 элементов, которые просматривал пользователь, поэтому я справился бы с этим в своем классе CookieManager, исключив самый старый файл cookie и поставив в очередь последний. Файл cookie Count отслеживал, сколько файлов cookie у меня было. Очевидно, что это не очень высокотехнологично или безопасно, но для этого проекта это было совершенно ненужным. Все, что вы хотите сохранить, должно быть сохранено в базе данных или в другом месте на стороне сервера.

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