3

我在用:

  • 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 正常工作?我有这个在不同的应用程序中工作;对我来说似乎是同样的设置。

4

2 回答 2

1

确保您在 heroku 上配置 memcachier 插件,并且您的环境中有它的凭据(运行:heroku config)。还要确保您的 memcachier 和 dalli 宝石没有嵌套在任何宝石组中,以便它们在生产中可用。

于 2014-09-10T10:31:49.730 回答
-4

你在 heroku 上使用免费的 paln 吗?您可能需要在 heroku 上添加dynos以提高应用程序在 heroku 上的处理速度。

退房:https ://devcenter.heroku.com/articles/dynos

于 2014-04-14T21:22:43.813 回答