实现页面视图计数器的最佳方法是什么,就像他们在每个问题都有"视图"计数器的网站上所拥有的那样?
考虑性能和可伸缩性问题.
我在stackoverflow视图计数器上做了两个观察:
link
标题中有一个元素可以处理触发计数更新.对于这个问题,标记看起来像这样:
我想你可以点击该URL来更新viewcount而不用实际查看页面,但我还没有尝试过.
我有一个uservoice票据,Jeff的响应表明视图不会连续两次从同一个ip增加.
我优化的计数器的工作方式如下:
UPDATE page_views SET counter = counter + 1 WHERE page_id = x if (affected_rows == 0 ) { INSERT INTO page_views (page_id, counter) VALUES (x, 1) }
这样,您对第一个视图运行2个查询,其他视图只需要1个查询.
一种有效的方法可能是:将您的计数器存储在Application对象中,您可以定期将其保存到文件/ DB,并在应用程序关闭时保留.