在页面上显示#view而不会一直打到数据库

时间:2009-02-05 17:55:30

标签: database views click

越来越多的网站正在显示某些网页收到的观看次数(以及dzone.com上的点击次数)。在没有每次加载数据库的情况下跟踪视图#的最佳做法是什么?

我有很多关于如何做到这一点的潜在想法,但它们似乎都不可行。

谢谢, 第一次使用。

5 个答案:

答案 0 :(得分:3)

我会首先尝试数据库方法 - 返回自动增量计数器的值应该是一个相当便宜的操作,所以你可能会感到惊讶。即使保留一个记录命中数的许多项目的表也应该是相当有效的。

但问题是如何避免在每次通话时击中数据库。我建议将表加载到webapp并在那里递增,只是定期将它备份到db或webapp关闭。

答案 1 :(得分:2)

一个便宜的技巧就是简单地将值缓存几分钟。

无论如何,确切的观看次数无关紧要,因为在繁忙的网站上,当访问者浏览页面时,已有一批新视图。

答案 2 :(得分:1)

一种方法是使用memcached作为计数器。您可以修改this rate limit implementation,而不是充当通用计数器。密钥可以是yyyymmddhhmm格式,有效期为15或30分钟(取决于您认为是并发访问者),然后在显示页面时只需get这些密钥。

many languages中提供了与memcache服务器通信的好库。

答案 3 :(得分:0)

您可以设置一个包含点击次数的平面文件。这会产生缩放问题,但它可以发挥作用。

如果您不关心显示网页浏览量,可以使用google analyticspiwik之类的内容。两者都在页面加载后发出请求,因此不会影响加载时间。可能有一种方法可以向分析服务器发出ajax请求,但我不确定。 Piwik是开源的,所以你可能会在一起破解。

答案 4 :(得分:-1)

如果您使用的是服务器端脚本,请在变量中增加它。如果重新启动服务,可能会重置,因此如果需要准确性,这不是一个好主意。