Edge Rails刚刚发布了一项小而实用的 缓存更新 。这项更新使您能够设定查询缓存的使用。查询缓存将记录SELECT语句并保证相通的SELECT语句在这个代码块中只访问一次数据库。一切 INSERT, UPDATE, DELETE 语句都会清空已经记录了查询语句的缓存。
1 2 3 4 5 6 |
User.cache do me = User.find(1) # DB hit again = User.find(1) # Cache hit me.update_attribute(:name => 'Not Ryan') # Cache cleared me = User.find(1) # DB hit end |
当您感到这个方法,对于大多数限定于一定规模内的controller的行为并没有多大帮助。但是请想象一下您的views(视图)本身可能会调用很多遍相同的授权查询语句。即使一句简单的
@is_admin || = user.get_role('ADMIN') |
就可以解决问题,您现在也可以通过“包装视图(views)“并建立查询语句的缓存达到相通目的,使它来为您服务。
查询语句缓存通过原生的 SQL语句建立标识,以使它们的代码复杂度被简化到最低。但是它依然无法识别被颠倒顺序但是输出相同结果的查询语句 – 在这样的情况下会再次访问数据库。简单的说,这个缓存只能识别表面文字完全相同的 SQL语句。
原文作者是 Ryan Daigle, 请访问他的博客
本片译文的原文地址:http://ryandaigle.com/articles/2007/2/7/what-s-new-in-edge-rails-activerecord-explicit-caching



