我有一个网站,用户可以在其中查看大量帖子。每次完成后,我都会运行一个类似于UPDATE table SET views=views+1 WHERE id = ?
. 但是,这种方法有许多缺点:
- 无法跟踪页面浏览量何时发生 - 它们只是递增。
- 据我了解,更新表通常会清除该行的 MySQL 缓存,从而使该行的下一个 SELECT 变慢。
因此,我考虑采用一种方法来创建一个表,例如:
object_views { object_id, year, month, day, views }
,以便每个对象都有一行 pr。这张表中的一天。然后我会定期更新表中的视图列,objects
这样我就不必一直进行昂贵的连接。
这是我能想到的最简单的解决方案,而且似乎也是对性能影响最小的解决方案。你同意?
(该站点基于 PHP 5.2、Symfony 1.4 和 Doctrine 1.2 构建,以防您想知道)
编辑:
目的不是网络分析——我知道该怎么做,而且已经到位。有两个目的:
- 允许用户查看给定对象已显示多少次,例如今天或昨天。
- 允许站点的版主查看简单的视图统计数据,而无需进入 Google Analytics、Omniture 或任何解决方案。此外,后端的结果必须是实时的,这是 GA 目前无法提供的功能。我不希望使用 Analytics API 来检索使用数据(不是实时的,GA 需要 JavaScript)。