我搜索了这个,很惊讶没有找到答案,所以我可能过于复杂了。但是,基本上我的 Rails 3 应用程序中有几个 RESTful 模型,我想以一种非常简单的方式跟踪它们,只是为了随着时间的推移跟踪流行度。就我而言,我只对跟踪 GET/show 方法的点击感兴趣——用户登录并查看这两个资源,他们的访问次数随着每次查看/页面加载而增加。
因此,我在 Books 模型上放置了一个“访问”列:
== AddVisitsToBooks: migrating ===============================================
-- add_column(:books, :visits, :integer)
-> 0.0008s
== AddVisitsToBooks: migrated (0.0009s) ======================================
该列初始化为零,然后,基本上,在 books_controller 内部,
def show
unless @book.owner == current_user #hypothetically, we won't let an owner
"cheat" their way to being popular
@book.visits = @book.visits + 1
@book.save
end
这很好用,除了现在每次调用 show 方法时,您不仅有一个对象记录的读取操作,还有一个写入操作。也许这正是我问题的核心;在中小型生产应用程序中插入单个整数更改所需的总开销是否很大?或者这是一笔小买卖,还是根本什么都没有?
有更聪明的方法吗?每次查看给定页面时,我想出的所有其他内容仍然涉及写入记录。即使我很少搜索该字段,索引该字段是否会有所帮助?
顺便说一下,数据库是 PostgreSQL 9(在 Heroku 上运行)。
谢谢!