【问题标题】:how does rails expire assets?Rails 如何使资产过期?
【发布时间】:2012-03-15 12:28:12
【问题描述】:

application.rb中,有以下内容:

# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'

我已经将它增加到 1.1,但是当我重新加载我的页面时,旧的 js 仍然被加载。看了下源码,期待找到js和css文件附加的GET版本参数,结果没有。

<link href="/assets/application.css" media="all" rel="stylesheet" type="text/css" />
<script src="/assets/application.js" type="text/javascript"></script>

是什么迫使浏览器清除其缓存?

【问题讨论】:

    标签: ruby-on-rails caching assets sprockets


    【解决方案1】:

    【讨论】:

    • 谢谢。我认为登台服务器面对的是使用 md5 In the production environment Rails uses the fingerprinting scheme outlined above.
    • 我还设置了一些有趣的故障排除选项。调试、编译、压缩、服务、local_request,天哪!
    【解决方案2】:

    您必须使用资产管道。然后使用asset_path、javascript_include_tag 等包含资产。您的get 没有Md5 指纹,因此您的资产管道未启用,或者您没有正确链接到您的js。

    【讨论】:

    • 我正在使用 rails helpers.. 我最好弄清楚我的 md5 去了哪里!
    • 尝试添加:config.assets.digest = true
    【解决方案3】:

    设置:

    config.assets.digest = true 
    

    在生产.rb 中。然后,当您使用以下方式预编译样式表时:

    rake assets:precompile
    

    您会看到指纹已添加到实际文件名中,如下所示:

    styles-5b4f282be3720d5b1e40d9e343dfc60a.css
    

    每当编辑样式表(或其他资产)时,都会更改此指纹。更改的文件名会强制浏览器清除其缓存。

    【讨论】:

      猜你喜欢
      • 2011-11-12
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 2013-09-07
      • 2014-11-07
      相关资源
      最近更新 更多