我正在使用:
Rails 4.1.0rc2
Heroku
gem 'memcachier'
gem 'dalli'
如果我从控制台使用缓存,它可以工作:
irb(main):010:0> Rails.cache.write("foo", "bar")
=> 1297036692682702848
irb(main):011:0> Rails.cache.read("foo")
=> "bar"
但是如果我在应用程序中使用Rails.cache.fetch设置缓存,并尝试通过控制台读取,我就明白了。
Rails.cache.read([School, "California", [], School.where(state: "California").all.map(&:updated_at).max, "city_filters"])
Dalli::Server#connect mc3.dev.ec2.memcachier.com:11211
Dalli/SASL authenticating as 451265
Dalli/SASL authenticating as 451265
Dalli/SASL: 451265
Dalli/SASL: 451265
=> [{:type=>"city", :value=>"San Francisco", :count=>11, :current=>false}]
但是当我在应用程序中运行它时,它每次都会进行新的搜索。
Completed 200 OK in 8481ms (Views: 1151.4ms | ActiveRecord: 246.6ms)
缓存在本地工作(它不是完整的缓存)。
Completed 200 OK in 655ms (Views: 244.5ms | ActiveRecord: 74.5ms)
如何让memcached / dalli工作?我有一个在不同的应用程序工作;对我而言似乎也是如此。
答案 0 :(得分:1)
确保在heroku上配置memcachier插件并在您的环境中拥有其凭据(运行:heroku config)。还要确保你的memcachier& dalli gems没有嵌套在任何宝石组中,因此它们可以在生产中使用。
答案 1 :(得分:-4)
你在heroku上使用免费计划吗? 您可能需要在heroku上添加 dynos ,以提高应用程序在heroku上的处理速度。