Как сделать систему учета просмотров?

Всем привет

Задача: на сайте есть множество (несколько тысяч товаров), нужно для начала разработать систему учета просмотров - т.е. какой товар смотрят больше, какой меньше итд. Это потом будет использоваться для различных систем рекомендации.

Как лучше учитывать просмотры?

  • +1 каждый раз при ренедере страницы
  • +1 каждый раз после полноценной загрузки страницы через ajax запрос


Как обезопасить себя от ботов, пауков и прочего треша, который может впустую накручивать счетчик?
  • Вопрос задан
  • 402 просмотра
Пригласить эксперта
Ответы на вопрос 4
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Сделайте счетчик по обращению по url, который вставляется в страницу как пустой <script src="/mycounter">
Во первых, боты обычно не загружают скрипты, во вторых - это очень просто. Ну и в третьих, скорее всего браузер страницу уже подгрузил.
Не забудьте отдавать некешируемый заголовок, иначе, брайзер единожды загрузив ваш пустой счетчик, больше его не загрузит.
Ответ написан
Комментировать
@alexbog80
django разработчик
Добрый день, у нас реализовано так в модели товаров есть поле:
show_count = models.IntegerField(default=0)
В классе просмотре товара (у нас DetailView) переопределен метод get_object:
def get_object(self, queryset=None):
        self.object = super(DetailViewPageView, self).get_object()
        self.object.show_count += 1
        self.object.save()
        return self.object

так же можно применить если просто используется функция при вызове объекта +1 и save()
Ответ написан
Комментировать
Tash1moto
@Tash1moto
1. на клиенте загрузил https://freegeoip.net/json/
2. если в базе такого нету, добавил его ip в базу и сделал +1 просмотр.
3. если в базе есть, то рады снова видеть вас на нашем сайте :)
Ответ написан
Комментировать
un1t
@un1t
Зачем велосимед изобретать? Яндекс Метрика и Гугл Аналитика.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы