StackOverFlow上的页面视图计数器

Tim*_*ung 10 asp.net

实现页面视图计数器的最佳方法是什么,就像他们在每个问题都有"视图"计数器的网站上所拥有的那样?

考虑性能和可伸缩性问题.

Joe*_*orn 11

我在stackoverflow视图计数器上做了两个观察:

  • link标题中有一个元素可以处理触发计数更新.对于这个问题,标记看起来像这样:
    <link href="/questions/246919/increment-view-count" type="text/css" rel="stylesheet" />
    我想你可以点击该URL来更新viewcount而不用实际查看页面,但我还没有尝试过.

  • 我有一个uservoice票据,Jeff的响应表明视图不会连续两次从同一个ip增加.


Bob*_*ger 8

我优化的计数器的工作方式如下:

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)
}
Run Code Online (Sandbox Code Playgroud)

这样,您对第一个视图运行2个查询,其他视图只需要1个查询.


Fra*_*ois 6

一种有效的方法可能是:将您的计数器存储在Application对象中,您可以定期将其保存到文件/ DB,并在应用程序关闭时保留.