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



我已经尝试了列出的各种答案,包括"如何防止浏览器在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_cacheching=错误

(叹气…)

主机是Linux、Apache、Passenger、Rails。

现在,这非常令人沮丧。已经很多很多小时了!这些答案似乎都不起作用。我变成了。。。绝望!

我想我会被这个答案弄得目瞪口呆,可能很简单。尽管如此,还有其他建议吗!求你了!非常感谢您的协助。

PS>喜欢这个网站。这些年来,我们找到了许多答案!

使用资产(但它们仅在Rails3中)。每次部署应用程序时,资产都会编译在css/js文件中,这些文件已经缩小并具有唯一的名称。Ruby On Rails资产管道

还有一个有用的提示。在你的应用服务器前面安装像Nginx这样的代理服务器,并为静态文件设置"过期",这样浏览器就会在文件过期时重新蚀刻文件。

解决方案实际上是由我的服务提供商提供的!

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

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

感谢大家的支持!

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

最新更新