muhtemelen örneğin, config/application.rb
dosyası içinde config.cache_store=
arayarak uygulamanızın varsayılan önbellek deposu kurma bu
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
gibi bir şey, config.cache_store = :memory_store
link Alex Ghiculescu bağlantı içinde faydalı bilgiler var sağlanan istiyorum bölüm 2.1.
cache_store'da bulunmayan bir anahtarı almaya çalıştığınızda, raylar önbellek deposu otomatik olarak doldurulur. Bu nedenle, anahtarlarınız için iyi bir adlandırma kuralı gelmek önemlidir. Temelleri oluşturduktan sonra, config/application.rb
'da uygun değişikliği yaparak farklı önbellek depoları arasında geçiş yapmak kolaydır. Bazı seçenekler memory store, file store, memcache veya herhangi bir önbellek deposu kombinasyonudur.
Rayları bellek içi önbelleğini temizlemek için raylar sunucunuzu yeniden başlatın. Dosya önbelleğini temizlemek için rake tmp:clear
yazın.Memcache'yi temizlemek için, bu link'a bakın. Beta tho hala http://api.rubyonrails.org/classes/ActiveRecord/IdentityMap.html
Onun, bu yüzden dikkatli kullanın:
Rayların önbelleklemeye yaklaşımı, Hibernate'in biraz farklı. Http://guides.rubyonrails.org/caching_with_rails.html ve http://broadcastingadam.com/2012/07/advanced_caching_revised/ adresinde, her şeyin nasıl çalıştığına dair iyi incelemeler için bir göz atmak isteyebilirsiniz. Sorunuzu anlamanız, her istekte veritabanından bir nesneyi almak zorunda kalmamanız gerektiğidir - doğru mu? Daha fazla kod gönderirseniz yardımcı olabilir. –
Alex'in dediği gibi, burada yeterince bilgi yok. Bu, seçerek kimliği nedir? Nereden geliyor? Hibernate get/load çağrısından mı? Bu hazırda bekar mı? Ya da ruby-on-raylar? –
@AlexGhiculescu Aynı kimlikten her istekte veritabanından bir nesne almak istemiyorum. – Joe