我目前在mysql中的方式是
UPDATE table SET hits=hits+1 WHERE id = 1;
这会保留网站上的实时统计信息,但据我了解,这不是最好的方法。
修改
让我澄清......这是用于计算特定项目页面上的点击量。我有一个电影列表,我想计算每个电影页面有多少观看次数。在它+ 1s之后,它将电影ID添加到会话var,其中故事是用户查看的所有页面的ID。如果页面的ID在该数组中,它将不会+1。
答案 0 :(得分:3)
如果您的流量足够高,则不应在每次请求时都访问数据库。尝试将计数保留在内存中并按计划同步数据库(例如,每1000个请求或每分钟更新一次数据库。)
答案 1 :(得分:3)
您可以采用与Stack Overflow's view count类似的方法。这基本上在加载图像时递增计数器。这有两个有用的方面:
优化更新: *将计数器保存在单个窄表中,并在密钥上使用聚簇索引。 *让表由不同的数据库服务器/主机提供。 *使用memcached和/或队列来允许写入延迟或运行异步。
如果您不需要实时显示视图计数,那么最好的办法是将电影ID包含在您的URL中,并使用日志报废在一天结束时填充数据库。
答案 2 :(得分:2)
不确定您使用的是哪个网络服务器。
如果您的Web服务器将请求记录到站点,请在文本文件中为每个请求说一行。然后你可以计算日志文件中的行。
您的解决方案存在一个主要问题,即它会锁定数据库中的行,因此您的网站一次只能提供一个请求。
答案 3 :(得分:1)
这取决于你是否想要点击或观看
从1 ip = 1个人查看页面的1个视图 1个人刷新同一页面=多次点击但只有一个视图
我总是喜欢谷歌分析等等,你需要确保这一点 这个数据库更新只进行一次,否则你很容易被淹没。
答案 4 :(得分:0)
我不确定您使用的是什么,但您可以设置一个cron作业,以便在Google App Engine中每x分钟自动更新一次计数。我想你会使用memcache来保存计数,直到你的cron作业运行。虽然...... GAE确实有一些统计报告,但您可能也希望拥有自己的数据。我认为您可以在其他系统上使用memcache,并在其上设置cron作业
答案 5 :(得分:0)
使用日志记录软件。谷歌分析功能非常丰富且功能齐全(并且在您的服务器上产生零负载),但它会错过非JavaScript命中。如果每次点击都很重要,请使用webalizer或awstats等服务器日志分析器。
答案 6 :(得分:0)
一般用MySQL:
也就是说,根据项目的“成熟度”和成功程度,您可能需要实施不同的解决方案,因此:
第一条建议:基准,基准,基准。
第二条建议:使用第一条建议中的数据,找出瓶颈并为您面临的问题选择解决方案,但不要选择您认为可能存在的未来问题。
以下是一个很棒的视频:http://www.youtube.com/watch?v=ZW5_eEKEC28
希望这会有所帮助。 :)