Хранить необработанные данные в файлах cookie - хорошая идея или плохая идея? - PullRequest
0 голосов
/ 29 марта 2011

Я хочу сохранить список недавно просмотренных профилей в файле cookie.
У меня есть сайт, где люди вводят идентификатор игрового персонажа (World of Warcraft) и могут просматривать профиль персонажа.
Идентификация символа состоит из имени (Unicode, до 15 символов), имени сервера (Unicode, до 25 символов) и зоны (2 символа, латинский-1).
Я сохраняю до 5 недавно просмотренных символов в файлах cookie, кодируя значения URL, поскольку не все браузеры поддерживают Unicode-cookie.

Это делает файл cookie длиной до двухсот символов.

Вопрос: это разумный подход? Вот несколько других решений, которые я бы хотел оценить.

  1. Сохранить символьный идентификатор, как он определен в базе данных. Плюсы: небольшой размер cookie, минусы: а) символ можно удалить из базы данных (база данных - это просто кэш для ускорения обновления), б) база данных может быть переиндексирована.
  2. сохранить имя + сервер + хэш зоны и найти его в базе данных. Минусы: а) опять же, символ можно удалить из базы данных, плюсы: переиндексация устойчива.
  3. требует, чтобы пользователь создал учетную запись и сохранил ее там. Минусы: никто не любит создавать учетные записи, и я бы предпочел не делать этого.

Я расщепляю волосы, и мое нынешнее решение (хранить закодированный URL-адрес в файле cookie) достаточно хорошо?

РЕДАКТИРОВАТЬ: Важно отметить, что список «последних символов» существует только для удобства, если он очищен - это не проблема вообще (это сродни «недавним файлам» в некоторые приложения).

Ответы [ 2 ]

0 голосов
/ 29 марта 2011

Если у вас нет проблем (или ограничений) с вашим текущим решением, я бы оставил все как есть. Помните, что, сохраняя весь символ и представляя эти данные, данные могут быть устаревшими.

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

0 голосов
/ 29 марта 2011

Лично я предпочел бы, чтобы идентификатор хранился в куки, а остальные данные были в базе данных. Если данные могут быть удалены во время сеанса пользователя, создайте новую таблицу только для сеанса пользователя (используйте их session_id) и имейте этот ID, сохраненный в cookie. Поместите дату и время в эту таблицу и периодически (как в задании cron) удаляйте все записи старше x дней.

...