2012-10-12 49 views
1

我試過了各種各樣的答案,包括 「如何防止瀏覽器在Rails中緩存頁面」。如何強制application.css在Rails 2.3.9中刷新?

我添加了一個隨機數到文件名末尾 - !

<%= stylesheet_link_tag 'application.css?123456' %> 
(which generates 
    &lt;link href="/stylesheets/application.css?123456" media="screen" rel="stylesheet" type="text/css" /> 
  • 仍然沒有運氣)

我用

&lt;style type=\"text/css\">@import url('/stylesheets/application.css');&lt;/style> 

我看看服務器上的文件,看起來不錯。 我通過瀏覽器(http://www.mysite.com/stylesheets/application.css) 看它,我看到了舊文件!在IE8和Firefox 14上。

我使用capistrano進行部署:rake tmp:cache:clear在重新啓動期間運行。 我已經設置,在配置/環境/ production.rb, config.cache_classes =假 和 config.action_controller.perform_caching =假

(嘆氣......)

主機是Linux操作系統,Apache ,客運,鐵路。

現在,這是非常令人沮喪的。這已經很多很多小時了! 沒有任何答案似乎有效。 我變得......絕望!

我希望我會被答案嚇倒,可能很簡單。 儘管如此,還有其他建議!請致電 !我們將非常感謝您的幫助。

PS>喜歡本網站。許多答案已經發現多年來!

+0

這聽起來好像比你的Rails應用更多地處理你的Apache設置。 – sosborn

+0

您是否嘗試過重新部署? –

+0

謝謝。這是在重新部署後我發現了這個問題。開發工作正常。 – dirktay

回答

-3

嘗試更新您的導軌。只是一個建議。

+1

這甚至不嘗試回答問題。可能適合作爲評論。 – sosborn

+0

更新Rails不是當前選項。也許在一年之內。必須使用當前版本。我需要Rails 2.3.9的解決方案。謝謝。 – dirktay

0

使用資產(但它們只在Rails 3中)。每次部署應用程序時,資產都將被編譯爲css/js文件,已經縮小且具有唯一的名稱。 Ruby On Rails Asset Pipeline

還有一個更有用的提示。在您的應用服務器前設置像Nginx這樣的代理服務器,併爲靜態文件設置「過期」,以便瀏覽器在過期時重新提取文件。

+0

是的,謝謝。我瞭解Rails 3.目前不是一種選擇。我的服務提供商管理共享機器上的所有內容。 (Site5主機)。我會問他們關於過期的文件。也許這是一個Passenger/Apache級別的問題。謝謝。 – dirktay

0

解決方案實際上是與我的服務提供商!

我使用capistrano進行部署。 它使用符號鏈接「當前」指向當前版本文件夾 (版本/ 201210109993333 /,或其他任何日期時間值)。

我使用子域重定向,並使用「current/public」作爲每個站點路徑的一部分。 不知何故,我所有的「當前」值都被他們的實際值取代了! 即,在我的重定向中,它表示「.../releases/201210109993333/public」。 WOW。因此,任何靜態資產都是從歷史文件夾中提供的,而不是當前的文件夾。 替換髮生在他們遷移到新機器時。看着替代的日期(發佈文件夾),我確信這就是發生了什麼。他們同意了。

感謝大家的支持!