My Rails 3.2 app包含上游负载均衡器的运行状况检查路径:
# routes.rb
get 'health' => lambda { |env| [200, {"Content-Type" => 'application/json'}, [ 'Alive.' ] ] }
我也在使用Dalli和memcached来缓存我的应用程序中的各种对象。我最近一直在使用Dalli调试输出,并注意到我的日志充满了健康检查:
# application.rb
config.cache_store = :dalli_store, "localhost:11211", { :compress => true, :expires_in => 1.day }
Dalli.logger = Logger.new("#{Rails.root}/log/#{Rails.env}_cache.log")
Dalli.logger.level = Logger::DEBUG
# development_cache.log
[DEBUG] Cache read: http://mysite.com/health/?
[DEBUG] Cache read: https://mysite.com:80/health/?
[DEBUG] Cache read: http://mysite.com/health/?
[DEBUG] Cache read: https://mysite.com:80/health/?
[DEBUG] Cache read: http://mysite.com/health/?
[DEBUG] Cache read: https://mysite.com:80/health/?
....
这些运行状况检查是否出于某种原因从缓存中提供?配置在哪里?我显然没有设置页面缓存。此路由是与该URL关联的唯一代码。
答案 0 :(得分:1)
这可能就是你拥有的Rack :: Cache中间件。 修复它的最简单方法(并且有利于遍历应用程序的大多数层)是在机架端点中添加与缓存相关的标头:
Cache-Control: no-cache
这将阻止Rack :: Cache缓存此操作的结果。 顺便说一下,你要返回的文本不是有效的json,所以要么将Content-Type更改为text / plain,要么返回类似{“result”:“alive”}
的内容。