active_model_cachers 能够让你以简单的方式去设定缓存机制,能够自由设定缓存的目标、以及何时清理缓存。支援 Rails 3, 4, 5。
在 Gemfile 里加上这行:
gem 'active_model_cachers'
加一个 initializer 到你的专案:
ActiveModelCachers.config do |config|
config.store = Rails.cache # 设定缓存的操作介面
end
名字与 lambda 内容都能自由更改
something_you_want_to_cache
是缓存的 key->{ get_the_data_on_cache_miss }
是缓存的资料,lambda 的回传值会存入缓存expire_by: 'User'
设定监控目标,当目标变动时,主动过期缓存class User < ActiveRecord::Base
cache_at :something_you_want_to_cache, ->{ get_the_data_on_cache_miss }, expire_by: 'User'
end
user.cacher.something_you_want_to_cache
user = User.includes(:posts).take
user.cacher.posts # => 无缓存时,仍然不会额外存取资料库
class User < ActiveRecord::Base
cache_self by: :account
end
@user = User.cacher.find_by(account: 'khiav')
与 identity_cache 、 second_level_cache 不同的是,这二者著重在于缓存 ActiveRecord
,对 AR 进行扩展,方便度较高,但弹性也因而降低。而 active_model_cachers 著重于自由设定缓存,不局限于缓存 AR。详细功能差异可参考这里
详细功能与使用说明,可以到 github repository 上观看: