【问题标题】:How to Force application.css to refresh in Rails 2.3.9?如何在 Rails 2.3.9 中强制 application.css 刷新?
【发布时间】:2012-10-02 21:15:35
【问题描述】:

我尝试了列出的各种答案,包括 “如何防止浏览器在 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> 喜欢这个网站。多年来已经找到了许多许多答案!

【问题讨论】:

  • 这听起来更像是与您的 Apache 设置有关,而不是与 Rails 应用有关。
  • 您是否尝试过重新部署。
  • 谢谢。重新部署后,我注意到了这个问题。开发工作正常。

标签: ruby-on-rails ruby caching refresh


【解决方案1】:

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

【讨论】:

  • 这真的连回答问题都没有。可能适合作为评论。
  • 更新 Rails 不是当前选项。也许一年后。必须使用当前版本。我需要 Rails 2.3.9 的解决方案。谢谢。
【解决方案2】:

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

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

【讨论】:

  • 好的,谢谢。我了解 Rails 3。目前不是一个选项。我的服务提供商管理共享机器上的所有内容。 (Site5 主机。)我会问他们有关过期文件的问题。也许这是乘客/阿帕奇级别的问题。谢谢。
【解决方案3】:

解决方案其实就是我的服务商!

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

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

感谢大家的支持!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2015-08-09
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2015-11-25
    相关资源
    最近更新 更多