Как я могу сделать так, чтобы голосование с использованием файлов cookie было проще, чем это? - PullRequest
5 голосов
/ 17 февраля 2012

Проще всего описать мою проблему с помощью рабочего примера: даже если вы не вошли в систему, YouTube запоминает то, что вы смотрели, и в следующий раз дает вам рекомендации на основе предыдущих просмотренных фильмов.

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

Для каждого посетителя есть проверка, есть ли у него куки.Если да, я запрашиваю его голоса.Если нет, я создаю фиктивного пользователя и отправляю ему файлы cookie.Теперь я храню отметку времени этого пользователя "last_visit".После этого все одинаково для обоих пользователей.Моя проблема в том, что моя БД заполняется фиктивными пользователями, поэтому у меня истек срок действия файлов cookie через 3 месяца, и мой сайт регулярно проверяет, какие пользователи не посещали мой сайт в последние 3 месяца, и удаляет их из БД.

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

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

Что я здесь упустил?Как это можно оптимизировать?

1 Ответ

1 голос
/ 17 февраля 2012

если они не имеют постоянной учетной записи, зачем вообще хранить что-либо, связанное с ними, в базе данных?просто запишите их предыдущие голоса в куки.вы также сохраняете общее количество голосов в БД, но анонимно, и вообще не связывает их с «пользователями».

...