缓存:[GET /] miss? dalli gem,memcached,rails 3.1,nginx,unicorn生产环境

时间:2011-10-04 21:48:25

标签: ruby-on-rails ruby-on-rails-3 memcached

我正在努力让第一个应用程序在生产中运行。无论我做什么,我都会在我的独角兽日志中获得一个基本的404页面,无论我做什么:

cache: [GET /] miss
cache: [GET /something] miss

production.rb

 config.cache_store = :dalli_store, 'localhost:11211'
 #config.cache_store = :memory_store

在开发过程中一切正常(没有在开发过程中跳过的缓存),并且双重检查我根据rails指南设置控制器动作缓存的所有语法都是正确的,只有错误消息。

任何人都可以给出一些关于为什么或我缺少什么的指示?在开发中工作,但不在我设置的服务器上。我非常乐意提供更多信息来解决这个问题。这是很多移动部件的协调,我很感激任何输入。

编辑:

我从memcached那里得到一些反馈,用以前的所有选项和-B二进制文件运行它(加上-vv)似乎程序甚至没有连接memcached; memcached在程序运行时没有注册任何内容。

编辑:

我回到了当地的开发和生产环境;缓存工作,memcached响应,唯一的区别是我没有运行nginx / unicorn只是webrick,但如果这有助于找出一个问题我应该知道这可能是一些用途和追求的方向。< / p>

编辑:

返回服务器,然后在启用了缓存配置的开发模式下运行:

  

config.cache_classes = true   config.action_controller.perform_caching =   true config.cache_store =:dalli_store,'127.0.0.1:11211'

很明显,rails没有与memcached连接。日志中没有任何内容甚至尝试连接缓存,而使用-vv运行的memcache也没有显示任何活动。如果我去控制台,我可以按照dalli基本cli说明手动连接,嗯。只是尝试使用memcached实例的各种选项不会产生任何响应。

但是,我可以在我设置它的每个请求上的索引页面上查询memcached stats ...虽然在rails日志中没有显示有关访问memcached的内容。

编辑:

通过这个摔跤,发现错误是无关的....一旦我对一个错误引用的样式表的一些资产管道问题进行了整理,一切似乎都在顺利进行。至少是学习经历。

2 个答案:

答案 0 :(得分:1)

Dalli只是二进制协议,因此请确保您的memcached服务器使用二进制协议。例如,memcached应​​该以​​:

开头
memcached [...] -B auto [...]

另外,memcached version must be >= 1.4.0

<强>更新

这些消息是由Rack::Cache设置为详细日志记录模式生成的,并不意味着任何事情都是错误的。他们更像是提醒你可以做像

这样的事情
expires_in 20.minutes
expires_in 3.hours, :public => true
expires_in 3.hours, 'max-stale' => 5.hours, :public => true

(在你的Rails控制器中)然后页面缓存可以自动工作(并且这些消息会在从缓存中呈现页面时消失。)

答案 1 :(得分:0)

您可以通过heroku控制台使用Rails.cache.read('[key]')来发现它是否正常工作