l85*_*85m 1 ruby caching ruby-on-rails
rails 文档说每个操作都会执行 SQL 缓存。但是我不清楚“每个动作”是什么意思。标准 rails 工具箱中是否有任何类型的进程可以免于缓存?
例如,ActiveJob 会从 SQL 缓存中受益吗?Rake 任务呢?
运行rack middleware你会看到use ActiveRecord::QueryCache——这是负责在请求期间缓存你的查询的中间件。
有趣的方法是这个- 它调用查询缓存模块来执行所有缓存。文档在这里。
我的猜测是,您可以在任何您喜欢的方法中使用此模块 - 后台作业、rake 任务等。activerecord默认情况下包含此模块,因此要在任务/方法开始时启用查询缓存运行:
ActiveRecord::Base.connection.enable_query_cache!
Run Code Online (Sandbox Code Playgroud)
当方法/任务完成时,执行这两个方法:
ActiveRecord::Base.connection.clear_query_cache
ActiveRecord::Base.connection.disable_query_cache!
Run Code Online (Sandbox Code Playgroud)
注意请记住禁用查询缓存 - 否则缓存将在您可能不想要的地方执行。还要执行分析并仅在您知道它不会引起副作用的情况下使用此缓存。还有一件事:这是一种单例方法 - 当您启用此缓存时,它会在整个过程中启用。
| 归档时间: |
|
| 查看次数: |
677 次 |
| 最近记录: |