如何在Rails 2.3.9中强制application.css刷新?

时间:2012-10-12 05:06:23

标签: ruby-on-rails ruby caching refresh

我已经尝试了各种各样的答案,包括 “如何防止浏览器在Rails中缓存页面”。

我在文件名末尾添加了一个随机数 -

  <%= 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在重启期间运行。 我在config / environments / production.rb中设置了 config.cache_classes = false 和 config.action_controller.perform_caching = false

(叹气...)

主机是Linux,Apache,Passenger,Rails。

现在,这非常令人沮丧。这已经很多很多小时了! 没有一个答案似乎有效。 我变得......绝望!

我希望我会被答案所夸大,可能很简单。 尽管如此,任何其他建议! 请!非常感谢您的协助。

PS&GT;喜欢这个网站。许多答案多年来一直被发现!

3 个答案:

答案 0 :(得分:0)

使用资产(但它们仅在Rails 3中)。每次部署应用程序时,资产都将编译为css / js文件,已经缩小并具有唯一名称。Ruby On Rails Asset Pipeline

还有一个有用的提示。在应用服务器前设置代理服务器,如Nginx,并为静态文件设置“expire”,这样浏览器会在文件过期后重新获取文件。

答案 1 :(得分:0)

事实上,解决方案是我的服务提供商!

我使用capistrano进行部署。 它使用符号链接“current”指向当前版本文件夹 (发布/ 201210109993333 /,或者其他,日期时间值)。

我使用子域重定向,并使用“current / public”作为每个站点路径的一部分。 不知何故,我所有的“当前”价值都被他们的实际价值所取代! 即,在我的重定向中,它说“... / releases / 201210109993333 / public”。 哇。因此,任何静态资产都是从历史文件夹中提取的,而不是当前的文件夹。 替换发生在他们迁移到新机器时。看着替换的日期(发布文件夹),我确信发生了什么。他们同意了。

感谢大家的支持!

答案 2 :(得分:-3)

尝试更新您的导轨。只是一个建议。