2016-09-20 161 views
1

我們最近將一個較舊的Rails 2.3網站從CentOS 6服務器遷移到CentOS 7服務器。自轉換之後,幾頁文件就不會被緩存。Rails 2.3頁面不應該放在Passenger上時被緩存5

下面是在Web服務器上的細節變化:

  • 舊系統客運4.x中,在新的客運5.0.30。
  • 舊系統的Ap​​ache,新的是Nginx的1.10.1
  • 該應用程序還沒有改變,不是添加config.ru客運等5
  • 我們正在紅寶石REE
  • 運行的Rails 2.3.17
  • 我們正在運行Memcached進行一些片段緩存,但不是使用這些頁面。

的事情,我們曾嘗試:

  • 如果我們修改視圖,所做的更改不會顯示,直到重新啓動。視圖模板被緩存。
  • 我們禁用乘客5的渦輪增壓。它沒有幫助。
  • 我們從Memcached中刪除了所有的密鑰。它沒有幫助。
  • 在磁盤上查找和刪除Rails緩存 - 我們沒有找到任何(也不應該)。

更多細節:

  • 我們舉辦其他幾個的Rails 2.3的Rails的3.X/4.x的網站網站和數十人沒有這個問題。
  • 如果重新啓動Nginx或touch tmp/restart.txt,會顯示更改。
  • Nginx的日誌文件顯示200
  • 生產Rails日誌文件顯示數據庫和視圖創建的時間。

看起來它是在生成輸出,但是它從Rails,Passenger和Nginx之間的某種緩存中提取。

這可能是什麼原因造成的?

+0

您是否直接在生產環境中修改視圖,而不是經歷「完整」部署過程(其中一步是反彈應用服務器)?這適用於您的其他應用程序? –

+0

什麼樣的變化被阻止?我在Rails 2.x模型關係中遇到過類似的問題,其中has_many或類似的關係緩存在啓動web服務器時的狀態(就好像db本身被緩存,儘管不是)。 –

+0

@SergioTulentsev我們修改了視圖,沒有完整的部署或彈出服務器。我懷疑這些緩存視圖模板緩存。 –

回答

0

原來這是一個範圍叫做DateTime.now,沒有包含在proc中 - Proc.new { DateTime.now }.call。這導致日期與模型一起被緩存。

爲什麼它沒有在舊的設置下緩存,我不確定。也許它只是更頻繁地重新開始,所以我們從來沒有看到它。