跳至内容 跳至搜索
方法
C
D
E
N
Q
U

属性

[RW] query_cache

类公共方法

dirties_query_cache(base, *method_names)

# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 20
        def dirties_query_cache(base, *method_names)
          method_names.each do |method_name|
            base.class_eval <<-end_code, __FILE__, __LINE__ + 1
              def #{method_name}(...)
                if pool.dirties_query_cache
                  ActiveRecord::Base.clear_query_caches_for_current_thread
                end
                super
              end
            end_code
          end
        end

new(*)

# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 196
def initialize(*)
  super
  @query_cache = nil
end

实例公共方法

cache(&block)

在块内启用查询缓存。

# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 206
def cache(&block)
  pool.enable_query_cache(&block)
end

clear_query_cache()

清除查询缓存。

你可能希望明确调用此方法的一个原因是在请求数据库随机化结果的查询之间。否则缓存将看到相同的 SQL 查询并重复返回相同的结果,从而默默地破坏你期望的随机性。

# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 232
def clear_query_cache
  pool.clear_query_cache
end

disable_query_cache!()

# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 222
def disable_query_cache!
  pool.disable_query_cache!
end

enable_query_cache!()

# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 210
def enable_query_cache!
  pool.enable_query_cache!
end

query_cache_enabled()

# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 201
def query_cache_enabled
  @query_cache&.enabled?
end

uncached(dirties: true, &block)

在块内禁用查询缓存。

dirties: false 设置为防止所有连接上的查询缓存被写入操作清除。(默认情况下,写入操作会使所有连接的查询缓存失效,以防它们是缓存现在已过时的副本。)

# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 218
def uncached(dirties: true, &block)
  pool.disable_query_cache(dirties: dirties, &block)
end