Rails 2.3 页面在不应该在 Passenger 5 上时被缓存
Rails 2.3 pages are cached when they shouldn't on Passenger 5
我们最近将一个较旧的 Rails 2.3 网站从 CentOS 6 服务器迁移到 CentOS 7 服务器。自那次过渡以来,一些本不该被缓存的页面被缓存了。
以下是网络服务器更改的详细信息:
- 旧系统是 Passenger 4.x,新系统是 Passenger 5.0.30.
- 旧系统是Apache,新系统是Nginx 1.10.1
- 除了为 Passenger 5 添加 config.ru
之外,该应用程序没有更改
- 我们 运行 Rails 2.3.17 Ruby REE
- 我们 运行 Memcached 用于一些片段缓存,但不是这些页面。
我们尝试过的事情:
- 如果我们修改视图,更改将在重新启动之前显示。视图模板已缓存。
- 我们禁用了 Passenger 5 的涡轮缓存。它没有帮助。
- 我们从 Memcached 中删除了所有密钥。它没有帮助。
- 在磁盘上查找并删除 Rails 缓存 – 我们没有找到(也不应该)。
更多详情:
- 我们托管了其他几个 Rails 2.3 网站和数十个 Rails 3.x/4.x 网站,没有这个问题。
- 如果您重新启动 Nginx 或
touch tmp/restart.txt
更改会显示出来。
- Nginx 的日志文件显示 200
- 生产 Rails 日志文件显示数据库和视图创建的时间。
看起来它正在生成输出,但随后它从 Rails、Passenger 和 Nginx 之间的某种缓存中提取。
可能是什么原因造成的?
这原来是一个调用 DateTime.now
的作用域,它没有包含在 proc - Proc.new { DateTime.now }.call
中。这会导致日期与模型一起缓存。
为什么它在旧设置下没有缓存,我不确定。也许它只是更频繁地重新启动,所以我们从来没有看到它。
我们最近将一个较旧的 Rails 2.3 网站从 CentOS 6 服务器迁移到 CentOS 7 服务器。自那次过渡以来,一些本不该被缓存的页面被缓存了。
以下是网络服务器更改的详细信息:
- 旧系统是 Passenger 4.x,新系统是 Passenger 5.0.30.
- 旧系统是Apache,新系统是Nginx 1.10.1
- 除了为 Passenger 5 添加 config.ru 之外,该应用程序没有更改
- 我们 运行 Rails 2.3.17 Ruby REE
- 我们 运行 Memcached 用于一些片段缓存,但不是这些页面。
我们尝试过的事情:
- 如果我们修改视图,更改将在重新启动之前显示。视图模板已缓存。
- 我们禁用了 Passenger 5 的涡轮缓存。它没有帮助。
- 我们从 Memcached 中删除了所有密钥。它没有帮助。
- 在磁盘上查找并删除 Rails 缓存 – 我们没有找到(也不应该)。
更多详情:
- 我们托管了其他几个 Rails 2.3 网站和数十个 Rails 3.x/4.x 网站,没有这个问题。
- 如果您重新启动 Nginx 或
touch tmp/restart.txt
更改会显示出来。 - Nginx 的日志文件显示 200
- 生产 Rails 日志文件显示数据库和视图创建的时间。
看起来它正在生成输出,但随后它从 Rails、Passenger 和 Nginx 之间的某种缓存中提取。
可能是什么原因造成的?
这原来是一个调用 DateTime.now
的作用域,它没有包含在 proc - Proc.new { DateTime.now }.call
中。这会导致日期与模型一起缓存。
为什么它在旧设置下没有缓存,我不确定。也许它只是更频繁地重新启动,所以我们从来没有看到它。