我想知道最好的方法是为文章,产品等实现点击计数器。现在如果有人访问该页面,计数器只会在数据库中添加一个。如果有人刷新页面,它会连续计数,误导结果和不必要的读取,写入。
我正在考虑存储他们的ip,但我不知道如何在mysql中建模。如果我为每次点击创建一个db记录,那将是巨大的。
我读过这篇文章: How to write an efficient hit counter for websites
最佳答案是使用日志,然后将此日志更新为db。但话又说回来。
确定新命中的最佳方法是使用IP还是其他变量。什么是再次记录特定用户命中的可接受时间。
也欢迎任何其他类型的实现。
答案 0 :(得分:2)
我想我只是使用他们的会话ID来检查。会话ID很容易获得,并且无需进行数据库命中即可检索它。对我来说可接受的时间是他们的下一次会议。在他们的会话中,我会跟踪他们点击的页面。这样,数据库中就没有任何东西可以检查,当会话消失时数据就会消失。
答案 1 :(得分:2)
您也可以只存储您首次登录的IP地址和时间,只有在时间足够长(可能是30分钟)时才会增加,然后还会增加与IP地址相关的时间。
答案 2 :(得分:1)
最简单的方法:当用户首次访问时,递增计数器并向其发送cookie。如果您检测到cookie,请不要递增计数器。
答案 3 :(得分:0)
这很棘手。真的不可能100%正确:
(1)
,到期(1)
或被禁用时会发生什么?{/ 1}} (2)
和/或(3)
(1)
(如果会话始终通过身份验证过程绑定到用户,则情况不同) 最常见的实现是使用cookie。记住它并不完美。
(1)
您将从同一位用户获得多次点击
(1)
除非您处理不允许使用Cookie的客户端,否则您将获得同一用户的大量点击
(2)
您只能获得多个用户的一次点击