したいとあなたの好みに有効期限を設定何てことはでき簡単な使用レールの内蔵キャッシュ
Rails.cache.fetch :cache_id_here, :expires_in => 1.days do
Model.find(id)
end
変更:cache_id_here
をサポートしている場合、私は知りません。このキャッシングは、memcachedなどの任意の代替キャッシュストアで使用できます。アプリケーションの設定でこれを設定するだけです。
UPDATE
私は鉄道の.findと.SAVE方法とキャッシュ結果を拡張することによってこの問題を解決して宝石に取り組んでいます。これはスーパーベータ版であり、まだプロダクションではテストされていませんが、試してみる場合は、のレポを見て、あなたの考えを教えてください。
Post.find(3)
を呼び出すと、自動的に保存キーまたはタッチ時に自動的に更新されるPost 3
のキャッシュキーを持つキャッシュバージョンが検索されて作成されます。私が言ったように、それはベータですが、それは問題を解決します。
あなたはおそらく例えば、
config.cache_store = :memory_store
linkアレックスGhiculescuはリンクで良い情報を持っていて、あなたの
config/application.rb
ファイル内
config.cache_store=
を呼び出すことにより、アプリケーションのデフォルトのキャッシュストアを設定し、この
class Foo < ActiveRecord::Base
def self.find_some_foo(foo_id)
Rails.cache.fetch("foo_#{foo_id}", expires_in: 7.days) do
begin
self.where(:id => foo_id)
rescue Exception => e
logger.info "Exception fetching Foo ID: #{e.to_s}"
nil
end
end
end
end
のようなものを、欲しいあなたのFooモデルで
キャッシュに対するRailsのアプローチは、Hibernateのアプローチとは少し異なります。どのように動作するかの概要については、http://guides.rubyonrails.org/caching_with_rails.htmlとhttp://broadcastingadam.com/2012/07/advanced_caching_revised/をご覧ください。あなたの質問を理解することは、各リクエストでデータベースからオブジェクトを取得することを避けたいということです。そうですね。いくつかのコードを投稿すると役立つかもしれません。 –
アレックスが言うように、ここでは十分な情報がありません。これは何ですか?それはどこから来たのですか? Hibernateを呼び出すことからget/load?このHibernateはまったくですか?あるいはルビー・オン・レール? –
@AlexGhiculescu私は、同じIDの各リクエストでデータベースからオブジェクトを取得したくありません。 – Joe