有没有办法在Rails中缓存每个请求数据?对于给定的Rails/mongrel请求,我有一个半昂贵的操作的结果,我想在该请求中多次访问.是否存在可以存储和访问此类数据的哈希?
它需要相当全局,并且可以从视图,控制器和库中访问,例如Rails.cache和I18n.
如果这就是它需要的话,我可以做一些猴子修补.
还有request_store gem.从文档:
将此行添加到应用程序的Gemfile:
gem 'request_store'
Run Code Online (Sandbox Code Playgroud)
并使用此代码存储和检索数据(仅限于请求):
# Set
RequestStore.store[:foo] = 0
# Get
RequestStore.store[:foo]
Run Code Online (Sandbox Code Playgroud)
尝试PerRequestCache。我从SQL查询缓存中窃取了设计。
使用以下命令进行配置config/environment.rb
:
config.middleware.use PerRequestCache
Run Code Online (Sandbox Code Playgroud)
然后将其用于:
PerRequestCache.fetch(:foo_cache){ some_expensive_foo }
Run Code Online (Sandbox Code Playgroud)