当Rails 2.3页面不应该在Passenger 5上时,它们会被缓存

时间:2016-09-20 20:38:14

标签: ruby-on-rails caching nginx passenger

我们最近将旧的Rails 2.3网站从CentOS 6服务器迁移到CentOS 7服务器。从那次转换开始,一些页面将被缓存,不应该是。

以下是有关Web服务器更改的详细信息:

  • 旧系统是Passenger 4.x,新系统是Passenger 5.0.30。
  • 旧系统是Apache,新系统是Nginx 1.10.1
  • 除了为Passenger 5添加config.ru
  • 之外,该应用尚未更改
  • 我们在Ruby REE上运行Rails 2.3.17
  • 我们正在运行Memcached进行一些片段缓存,但不是这些页面。

我们尝试过的事情:

  • 如果我们修改视图,则更改不会在重新启动之前显示。视图模板已缓存。
  • 我们禁用了Passenger 5的turbocache。它没有帮助。
  • 我们从Memcached中删除了所有密钥。它没有帮助。
  • 在磁盘上查找和删除Rails缓存 - 我们没有找到(也不应该)。

更多详情:

  • 我们托管了其他几个Rails 2.3网站和数十个Rails 3.x / 4.x网站,但没有这个问题。
  • 如果您重新启动Nginx或touch tmp/restart.txt,则会显示更改。
  • Nginx的日志文件显示为200
  • 生产Rails日志文件显示数据库和视图创建的时间。

看起来它正在生成输出,但它从Rails,Passenger和Nginx之间的某种缓存中拉出来。

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

原来这是一个调用DateTime.now的范围,它没有包含在proc - Proc.new { DateTime.now }.call中。这会导致日期与模型一起缓存。

为什么它没有在旧设置下缓存,我不确定。也许它只是经常重启,所以我们从未见过它。