Хранить необработанные данные в файлах cookie - хорошая идея или плохая идея?

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

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

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

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

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

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам