略過至內容 略過至搜尋
方法
C
U

執行個體公開方法

cache(&block)

如果已設定 ActiveRecord,便會在區塊內啟用查詢快取。如果沒有設定,系統將執行所提供的區塊。

# File activerecord/lib/active_record/query_cache.rb, line 9
def cache(&block)
  if connected? || !configurations.empty?
    pool = connection_pool
    was_enabled = pool.query_cache_enabled
    begin
      pool.enable_query_cache(&block)
    ensure
      pool.clear_query_cache unless was_enabled
    end
  else
    yield
  end
end

uncached(dirties: true, &block)

如果已設定 ActiveRecord,便會在區塊內停用查詢快取。如果沒有設定,系統將執行所提供的區塊。

設定 dirties: false 以避免所有連線上的寫入作業清除查詢快取。(預設情況下,寫入作業會清除所有連線的查詢快取,以防這些連線是快取資料可能會過時的複製品。)

# File activerecord/lib/active_record/query_cache.rb, line 28
def uncached(dirties: true, &block)
  if connected? || !configurations.empty?
    connection_pool.disable_query_cache(dirties: dirties, &block)
  else
    yield
  end
end